题解 | #最小覆盖子串#

最小覆盖子串

https://www.nowcoder.com/practice/c466d480d20c4c7c9d322d12ca7955ac

/*
	HW双指针3 最小覆盖子串

*/
class Solution {
public:
    unordered_map<char,int>hash;
    bool check()
    {
        for(auto it=hash.begin();it!=hash.end();it++){
            if(it->second<=0)return false;
        }
        return true;
    }

    string minWindow(string S, string T) {
        int lens=S.length(),lent=T.length();
        for(int i=0;i<lent;i++){
            if(hash.count(T[i]))hash[T[i]]--;
            else hash[T[i]]=0;
        }
        int lo=0,hi=0;
        int cnt=lens+1;
        int l=-1,r=-1;
        for(;hi<lens;hi++){
            char ch=S[hi];
            if(hash.count(ch))hash[ch]++;
            while(check()){
                if(cnt>hi-lo+1){
                    cnt=hi-lo+1;
                    l=lo;
                    r=hi;
                }
                char cl=S[lo];
                if(hash.count(cl)){
                    hash[cl]--;
                }
                lo++;
            }
        }
        if(l==-1)return "";
        return string(S.begin()+l,S.begin()+r+1);
    }
};
全部评论

相关推荐

藏剑天涯:全要了 领4份工资
点赞 评论 收藏
分享
头像
09-29 16:18
门头沟学院 Java
点赞 评论 收藏
分享
把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
昨天 13:08
蚌埠坦克学院 C++
服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务