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;
    }
};

 

 

 

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