题目描述
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
出处文章来源:https://www.toymoban.com/news/detail-815920.html
思路
使用双指针构成一个滑动窗口,维护窗口内的字符不重复,逐步右移右指针,当右指针所指元素已经在窗口内时,左指针右移到和右指针所指元素重复的位置的右侧。
每次右移右指针会使窗口增大,右移左指针会使窗口减小,最后返回窗口的历史最大值。文章来源地址https://www.toymoban.com/news/detail-815920.html
代码
class Solution {
public:
int lengthOfLongestSubstring(string s) {
if(s.length()<2)
return s.length();
int maxl=1;
vector<char> v;
int left=0,right=left+1;
v.emplace_back(s[left]);
while(right<s.length()) {
if(find(v.begin(),v.end(),s[right])==v.end()){
v.emplace_back(s[right]);
right++;
maxl=max(right-left,maxl);
}
else{
while(s[left]!=s[right]&&left<right){
v.erase(find(v.begin(),v.end(),s[left]));
left++;
}
left++;
right++;
}
}
return maxl;
}
};
到了这里,关于[力扣 Hot100]Day8 无重复字符的最长子串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!