双指针 + 哈希表
class Solution {
public int lengthOfLongestSubstring(String s) {
int ans = 0;
HashSet<Character> hs = new HashSet<>();
int l = 0, r = 0;
while(r < s.length()) {
if(!hs.contains(s.charAt(r))) {
hs.add(s.charAt(r));
ans = Math.max(ans, r - l + 1);
r ++;
}
else {
while(l < r && hs.contains(s.charAt(r))) {
hs.remove(s.charAt(l));
l ++;
}
}
}
return ans;
}
}