题目
题解一:单指针,滑动窗口
思路:
设置一个左指针,来判断下一个元素是否在set集合中,如果不在,就加入集合,right继续++,如果在,就剔除重复的元素,计算串的长度,在执行上述操作
代码:
public int lengthOfLongestSubstring(String s) {Set<Character> set = new HashSet<>();int right = -1; //左侧滑动指针 ,更新窗口的开始位置int max = 0;int length= s.length();for(int i = 0 ; i<length ; i++){//如果set集合不包含right+1这个元素,则直接入集合,并且right+1要小于字符串长度while (right + 1 < length && !set.contains(s.charAt(right + 1))) {set.add(s.charAt((right+1)));right++;}max = Math.max(max,set.size()) ;set.remove(s.charAt(i)); }return max;}