解析:
- 遍历 判断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);}
}