3. 无重复字符的最长子串
思路
滑动窗口,fast和slow都是向后移动,slow记录左,fast向后移动,
如果fast遇到重复的,修改slow的值,每次都要改变max的值,hashMap用于判断是否有重复的值
class Solution {
public int lengthOfLongestSubstring(String s) {
int len =s.length();
HashMap<Character, Integer> hashMap = new HashMap<>();
int max = 0;
char[] letters = s.toCharArray();
int slow = 0;
for (int i = 0; i < len; i++){
if (hashMap.containsKey(letters[i])){
// 判断哪个更大
slow = Math.max(hashMap.get(letters[i]) + 1, slow);
}
hashMap.put(letters[i], i);
max = Math.max(max,i - slow + 1);
}
return max;
}
}