解析:
- 遍历 判断map是否包含当前字符,如果包含:
- 获取重复的index下标在哪里
- 获取len长度
- 重新设置L指针,其中L指针不回退,也就是如果这个重复值在L前面那就忽略,如果是在后面那就设置为index+1。
代码如下:
class Solution {
public int lengthOfLongestSubstring(String s) {
if (s==null||s.isEmpty()){
return 0;
}
Map<Character, Integer> map = new HashMap<>();
int L=0;
int R=0;
int len=0;
while (L<=R&&R<s.length()){
if (map.containsKey(s.charAt(R))){
Integer index = map.get(s.charAt(R));
len=Math.max(R-L,len);
//L 不回退
L=Math.max(index+1,L);
}
map.put(s.charAt(R),R);
R++;
}
return Math.max(len,R-L);
}
}