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

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        unordered_map<char, int> map;
        int ans = 0;
        for(int start = 0, end = 0; end < s.size(); end++){
            char alpha = s[end];
            if(map.find(alpha) != map.end()){
                start = max(map[alpha], start);
            }
            ans = max(end-start+1, ans);
            map[alpha] = end+1;

        }
        return ans;
    }
};

思路:设置一个map,里面存放值以及如果遇到重复的值,start应该从哪里开始(即值的地方+1),之后每次判断遍历到的值是否重复出现,以及计算当前最大的子串个数。

posted on 2023-03-07 15:17  小黑哈哈  阅读(11)  评论(0编辑  收藏  举报