题目描述: 参考代码: public int lengthOfLongestSubstring(String s) { int ans=0; Map<Character,Integer> map=new HashMap<>(); for (int end = 0,start=0; end <s.length() ; end++) { char c=s.charAt(end); if(map.containsKey(c)) start=Math.max(map.get(c),start); ans=Math.max(ans,end-start+1); map.put(c,end+1); } return ans; } public int lengthOfLongestSubstring(String s) { HashMap<Character,Integer> map=new HashMap<>(); char[] c=s.toCharArray(); int max=0; int left=0; if(s.length()<2) return s.length(); map.put(c[0],0);//先把一个放进去 for (int i = 1; i < s.length(); i++) { if(map.containsKey(c[i]))//遇到相同的就更新left指针 { left=Math.max(left,map.get(c[i])+1);//更新到存在的元素的右边与left的最大值 } map.put(c[i],i);//放入新的元素,更新i max=Math.max(max,i-left+1);//维护max } return max; }