3. 无重复字符的最长子串

滑动窗口

解题思路
在这里插入图片描述

  • left 和 right 都处于最左边指向
  • right 不断向右遍历直到末尾(在遍历期间遇到了重复的元素 right 就停下来,然后 left 开始向右遍历直到删除重复的元素,然后 right 继续向右遍历)
  • 在遍历期间不断更新最长子串的长度

代码

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int ret = 0;
        int left = 0;
        int size = s.size();
        unordered_set<char> Set;
        for (int right = 0; right < size; ++right)
        {
            while (Set.find(s[right]) != Set.end())
            {
                Set.erase(s[left]);
                left++;
            }

            ret = max(ret,right - left + 1);
            Set.insert(s[right]);
        }

        return ret;
    }
};
posted @ 2022-06-02 18:15  木丨易  阅读(25)  评论(0)    收藏  举报