Leetcode 76最小覆盖串 滑动窗口问题

 

这是典型的滑动窗口,建议用两个Hash表,如果想优化,后期可以优化成一个,但两个Hash表不容易出错。是否已经包含,(不需要遍历一遍Hash表,这里有一个技巧,就是用一个count。滑动窗口始终维护住成立即可)

class Solution {
public:
    string minWindow(string s, string t) {
        unordered_map<char,int> hs,ht;
        for(auto c:t) ht[c]++;
        string res;
        int count = 0, len = s.size()+1;
        for(int i=0,j=0;j<s.size();j++){
            if(hs[s[j]]<ht[s[j]]) count++;
            hs[s[j]]++;
            while(hs[s[i]]>ht[s[i]]) hs[s[i++]]--;
            if(count==t.size()&&j-i+1<len){
                len = j-i + 1;
                res = s.substr(i,j-i+1);
            }
        }
        return res;
    }
};

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章