考察滑动窗口和HashMap的使用,不断更新最优解
class Solution {
public int lengthOfLongestSubstring(String s) {
//滑动窗口 队列左边出,右边进
//用HashMap来表示最近一次的字符为key,所在下标为value
// left = max(left,m.getValue(key)+1)
Map<Character,Integer> m = new HashMap<>();
int mm = 0,left = 0;
for(int i = 0; i < s.length(); i++) {
if(m.containsKey(s.charAt(i))) {
left = Math.max(left,m.get(s.charAt(i))+1);
}
m.put(s.charAt(i),i);
mm = Math.max(mm,i-left+1);
}
return mm;
}
}