文章目录
- 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;}
};