题目
题解一:单指针,滑动窗口
思路:
设置一个左指针,来判断下一个元素是否在set集合中,如果不在,就加入集合,right继续++,如果在,就剔除重复的元素,计算串的长度,在执行上述操作
文章来源:https://www.toymoban.com/news/detail-665638.html
代码:文章来源地址https://www.toymoban.com/news/detail-665638.html
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;
}
到了这里,关于【LeetCode-中等题】3. 无重复字符的最长子串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!