class Solution { public int lengthOfLongestSubstring(String s) { //定义一个map<k,v>,key存字符,value存字符下标(位置) int len = 0; Map<Character,Integer> map = new HashMap<>(); for(int start = 0,end = 0;end<s.length();end++){ char a = s.charAt(end); if(map.containsKey(a)){ //调整左边界为end的位置 start = Math.max(map.get(a),start); } len = Math.max(end-start+1,len); map.put(a,end+1); } return len; } }
解法:滑动窗口
1.遇到重复字符,调整左边界到重复字符的位置
2.字符不重复,右边界向右扩展
举例: