滑动窗口 实现无重复最大连续字串

涉及unordered_set类型的使用,包括find()、insert()、erase()函数使用。

滑动窗口:当前字符串不存在字串中,直接插入;若存在,将最左边的元素一直移除直到不存在。这样相当于遍历了所有无重复连续字串。 

 

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        unordered_set <char> substr;;
        int maxlen = 0;
        int left = 0;
        for(int i=0; i < s.size(); i++) {
            while (substr.find(s[i]) != substr.end()) {
                substr.erase(s[left]);
                left++;
            }
            substr.insert(s[i]);
            maxlen = max(maxlen, i-left+1);
        }
        return maxlen;
    }
};
posted @ 2020-03-29 14:45  比特的脉搏  阅读(164)  评论(0)    收藏  举报