美文网首页
leetcode3 无重复字符的最长子串

leetcode3 无重复字符的最长子串

作者: 奥利奥蘸墨水 | 来源:发表于2020-04-14 22:49 被阅读0次

    题目

    无重复字符的最长子串

    分析

    典型的滑动窗口题目。

    一个窗口用两个指针left,right来维护,不断移动right指针,right指针的位置只有两种情况:

    1. [left,right)的这个窗口里没有right指针指向的字符,那么那么就继续移动right指针
    2. [left,right)的这个窗口里有right指针指向的字符,那么就将left指针移动到这个重复出现的字符的下一个位置。

    代码

    class Solution {
    public:
        int lengthOfLongestSubstring(string s) {
            if (s.empty()){
                return 0;
            }
    
            int start = 0, res = 1;
            unordered_map<char, int> mp;
            mp[s[0]] = 0;
    
            for (int i = 1; i < s.size(); i++){
                if (mp.count(s[i]) != 0 && mp[s[i]] >= start){
                    start = mp[s[i]] + 1;
                }
                mp[s[i]] = i;
                res = max(res, i - start + 1);
            }
    
            return res;
        }
    };
    

    相关文章

      网友评论

          本文标题:leetcode3 无重复字符的最长子串

          本文链接:https://www.haomeiwen.com/subject/lpzxvhtx.html