记录个人学习! 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 class Solution { public int lengthOfLongestSubstring(String s) { Set<Character>set=new HashSet<>(); int setr=-1; int ans=0; for (int i = 0; i <s.length() ; i++) { if(i!=0) set.remove(s.charAt(i-1)); while (setr+1<s.length()&&!set.contains(s.charAt(setr+1))) { set.add(s.charAt(setr+1)); setr++; } ans=Math.max(ans, set.size()); } return ans; } } 这种计算重复字串长度的肯定要联想到Set,往set中插入已有元素它返回false,否则返回true。 像这题就是以字符串中的不同字符作为开头,从此遍历后续,然后到重复就断,前面的存入Set,然后与最大长度比较,然后官方给的解也差不多,他只开辟了一个Set,考虑到Set的复用,在一个重复的子串前所有的字符遍历都要在这里断掉,然后考虑以某个字符开始,把该字符的前面元素断掉。然后比较