2017-10-08 33 views
-1

このループがどのように終了するのか知りたいですか? iとjはs.charAt(j ++)とs.charAt(i ++)を除いてどこでもインクリメントされていないので、jまたはi番目の位置でcharを見つけることができます。それもjとiを増やしますか?私の意見では、j ++やi ++での文字コードはそれほどではないでしょうか? ++ iの値をインクリメントIを用いwhileループ終了条件

public class Solution { 
    public int lengthOfLongestSubstring(String s) { 
     int n = s.length(); 
     Set<Character> set = new HashSet<>(); 
     int ans = 0, i = 0, j = 0; 
     while (i < n && j < n) { 
      // try to extend the range [i, j] 
     if (!set.contains(s.charAt(j))){ 
      set.add(s.charAt(j++)); 
      ans = Math.max(ans, j - i); 
     } 
     else { 
      set.remove(s.charAt(i++)); 
     } 
    } 
    return ans; 
} 

}

+0

'i ++'は 'i'に格納された値を変更します。 –

+0

ありがとう!それは私がそれがすると信じていたものです。 –

答えて

0

はい。 次の位置で文字を検索する場合は、別の変数を使用してi + 1の値を格納し、それを使用して文字にアクセスできます。ポストインクリメントまたはプリインクリメントを使用すると、インクリメント変数の値が常に変更され、インクリメント変数の値がインクリメントされる場合と異なります。

+0

ありがとうございました!今私はそれを持っているようです。 –

+0

答えがあなたを助けたら、それを受け入れてください。乾杯:) –