题目描述:
解答:
class Solution {
public int lengthOfLongestSubstring(String s) {
//思路一 Hash表+双指针
//
int maxLength = 0;
HashMap<Character, Integer> map = new HashMap<>();
int fast = 0;
int slow = 0;
while (fast < s.length()) {
if (map.containsKey(s.charAt(fast))) {
//contains只是包含,并没有再加如
slow=Math.max(slow, map.get(s.charAt(fast))+1);
map.remove(s.charAt(fast));
} else {
map.put(s.charAt(fast), fast);
fast++;
}
maxLength=Math.max(maxLength, fast-slow);
}
return maxLength;
}
}
模拟一下过程。
slow=Math.max(slow, map.get(s.charAt(fast))+1);
关键代码。