滑动窗口(Java)
class Solution {
public int lengthOfLongestSubstring(String s) {
if(s.length() == 0){
return 0;
}
HashMap<Character,Integer> map = new HashMap<Character,Integer>();
int left = 0;//滑动窗口的左边界
int max = 0;//不含有重复字符的最长子串的长度
for(int i = 0; i < s.length(); i++){
if(map.containsKey(s.charAt(i))){
left = Math.max(left,map.get(s.charAt(i)) + 1);//以abbac为例,便于理解max()
}
map.put(s.charAt(i), i);
max = Math.max(max, i - left + 1);
}
return max;
}
}