文章目录
- 1. 无重复字符的最长子串
 
 
1. 无重复字符的最长子串
题目链接🔗
 
- 🍎题目思路:
- 🐧① 滑动窗口的思想;
- 🐧② 用什么来维护窗口呢 ? 用 双指针 和 unordered_set来维护,为什么呢? 因为unordered_set不允许存储重复字符,利用这点特性,我们只需要在加入新的字符之前,先判断unordered_set里面有没有该元素,没有的话,我们再加入。
- 🍎题目代码:
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int ans = 0, left = 0;
        unordered_set<int> window;
        int n = s.size();
        for (int right = 0; right < n; right ++)
        {
            char ch = s[right];
            // 1.要先判断窗口是否有该元素,如果有的话,应该把该元素先出窗口
            while (window.count(ch) > 0)
            {
                window.erase(s[left]);
                left ++;    // 缩小窗口
            }
            // 2. 判断窗口没有 ch 元素之后才能加入
            window.insert(ch);
            
            ans = max(ans, right - left + 1);
        }
        return ans;
    }
};



















