class Solution {
public int lengthOfLongestSubstring(String s) {
Set<Character> hash = new HashSet<>();
int i = 0, j = 0, n = s.length();
int ans = 0;
while (i < n && j < n){
if (!hash.contains(s.charAt(j))){
ans = Math.max(ans, j - i + 1);
hash.add(s.charAt(j++));
}
else{
hash.remove(s.charAt(i++));
}
}
return ans;
}
}
O(n)