76. 最小覆盖子串

class Solution {
public:
    string minWindow(string s, string t) {
        if (s.size()<t.size())
            return "";
        int count=0,left=0,right=0,Left=0,min=INT_MAX;
        unordered_map<char,int>hash;
        for(auto c:t)
            hash[c]++;
        for(;right<s.size();right++)
        {
            if(hash.find(s[right])!=hash.end())//存在该字符
            {
                if(hash[s[right]]>0)
                    count++;
                hash[s[right]]--;
            }
            while(count==t.size())
            {
                if(min>(right-left+1))//对最小值进行修改
                {
                    min=right-left+1;
                    Left=left;
                }
                if(hash.find(s[left])!=hash.end())//对左边值进行收缩
                {
                    if(hash[s[left]]>=0)
                       count--;
                    hash[s[left]]++;
                }
                left++;
            }
        }
        return min==INT_MAX ? "" :s.substr(Left,min);
    }
};

版权声明:本文为weixin_41413511原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。