题目来源:
leetcode题目,网址:3. 无重复字符的最长子串 - 力扣(LeetCode)
解题思路:
滑动窗口。使用哈希集合来记录窗口中的字符。当窗口右边界不为字符串右边界时,窗口右边界右移一位,若此时窗口右边界字符未出现在哈希集合中,将其添加至哈希集合,否则窗口左边界向右移动至其左边第一个字符与此时的窗口右边界字符相同,并在哈希集合中删除已出现过的字符。最后返回该过程中窗口的最大值即可。
解题代码:
class Solution {
public:int lengthOfLongestSubstring(string s) {if(s.length()==0 || s.length()==1){return s.length();}int res=0;int start=0;int end=0;unordered_set<char> cnt;cnt.insert(s[0]);while(end<s.length()-1){end++;if(cnt.count(s[end])==0){cnt.insert(s[end]);}else{while(s[start]!=s[end]){cnt.erase(s[start]);start++;}start++;}res=max(end-start+1,res);}return res;}
};
总结:
官方题解也是滑动窗口的思路。