题意:最长不重复字串的长度。
示例:Input: abcabcbb
Output: 3
Explanation: The answer is "abc"
, with the length of 3.
.
题解:维护两个指针left,right。
right遇到已有字符时,left右移。
right遇到新字符时,维护最长区间长度。
class Solution {
public int lengthOfLongestSubstring(String s) {
int left = 0;
int right = 0;
int len = s.length();
int ans = 0;
Map<Character,Integer> cnt = new HashMap<Character,Integer> ();
while(left < len && right < len){
char c = s.charAt(right);
Integer x = cnt.get(c);
if(x == null){
cnt.put(c,right);
int l = right - left + 1;
ans = ans > l ? ans : l;
right ++;
}else while(left != x+1) cnt.remove(s.charAt(left++));
}
return ans;
}
}