滑窗题
时间复杂度:
空间复杂度:

class Solution {
public:
    string minWindow(string s, string t) {
        int n = s.length();
        unordered_map<char, int> ump, curUmp;
        int target = 0;
        for(char ch:t) ump[ch] ++, target ++;
        int ans = INT_MAX;
        int cnt = 0;
        int end = -1;
        string res;
        for(int i = 0; i < n; i ++){
            if(i > 0){
                if(ump.count(s[i - 1]) > 0 && curUmp[s[i - 1]] <= ump[s[i - 1]]) cnt --;
                curUmp[s[i - 1]] --;

            }
            while(end + 1 < n && cnt < target){
                end ++;
                curUmp[s[end]] ++;
                if(ump.count(s[end]) > 0 && curUmp[s[end]] <= ump[s[end]]) cnt ++;
            }
            if(cnt == target){
                if(ans > end - i + 1){
                    ans = end - i + 1;
                    res = s.substr(i, ans);
                }
            }
        }
        return res;
    }
};