3. Longest Substring Without Repeating Characters
public int lengthOfLongestSubstring(String s) {
int len = s.length(), l = 0, r = 0, ans = 0;
Set<Character> set = new HashSet<>();
while (l < len && r < len) {
if (!set.contains(s.charAt(r))) { // 如果window末尾的字母没有出现过
set.add(s.charAt(r++)); // 先移动r,增加window的长度
ans = Math.max(ans, r - l); // 计算长度最大值
} else { // 如果当前字母已经出现过,需要移动窗口
set.remove(s.charAt(l++)); // 把当前在l位置的字母去除,并且l++
}
}
return ans;
}Last updated