我想知道这个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;
}
}
答案 0 :(得分:0)
是的,使用i ++增加i的值。 如果你想在下一个位置找到比i更多的字符,那么你可以简单地使用另一个变量并在其中存储i + 1值并使用它来访问字符。像这样:
z = i+1;
set.add(s.charAt(z));
使用后增量或预增量总是会改变增量变量的值,并且只会增加增量变量值的增量。