题目
题解一:单指针,滑动窗口
思路:
设置一个左指针,来判断下一个元素是否在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;
}