classSolution{publicintlengthOfLongestSubstring(String s){// 滑动窗口int len = s.length();int max =0;int left =0;HashMap<Character,Integer> map =newHashMap<>();for(int i =0; i < len; i++){if(map.containsKey(s.charAt(i))){
left =Math.max(left, map.get(s.charAt(i))+1);}
map.put(s.charAt(i), i);
max =Math.max(max, i-left+1);}return max;}}
时间复杂度:O(n)
空间复杂度:O(n)
解法二:滑动窗口
classSolution{publicintlengthOfLongestSubstring(String s){// 滑动窗口int len = s.length();int max =0;int left =0, right =0, start =0;Map<Character,Integer> window =newHashMap<>();while(right < len){char c = s.charAt(right);
right++;
window.put(c, window.getOrDefault(c,0)+1);while(window.get(c)>1){char d = s.charAt(left);
left++;
window.put(d, window.get(d)-1);}
max =Math.max(max, right - left);}return max;}}