循环退出条件

时间:2017-10-08 04:52:08

标签: while-loop exit

我想知道这个while循环如何退出?因为除了在s.charAt(j ++)和s.charAt(i ++)之外的任何地方都没有增加i和j,这是在j或第i位置找到char。这也增加了j和i吗?在我看来它应该只给你j ++或i ++的字符代码这个位置不是吗?

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;
}

}

1 个答案:

答案 0 :(得分:0)

是的,使用i ++增加i的值。 如果你想在下一个位置找到比i更多的字符,那么你可以简单地使用另一个变量并在其中存储i + 1值并使用它来访问字符。像这样:

z = i+1;
set.add(s.charAt(z));

使用后增量或预增量总是会改变增量变量的值,并且只会增加增量变量值的增量。