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

Alex_Shen
2022-03-29 / 0 评论 / 0 点赞 / 105 阅读 / 351 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-03-31,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。

思路: 滑动窗口

代码:

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        unordered_set<char> mp;
        int l=0,r=0;
        int MAX=0;
        for(r=0;r<s.size();r++){
            if(mp.count(s[r])){
                MAX=max(MAX,r-l);
                while(s[l]!=s[r]){
                    mp.erase(s[l]);
                    l++;
                }
                l++;
            } else{
                mp.insert(s[r]);
            }
        }
        return max(MAX,r-l);
    }
};
0

评论区