题解 | #最小覆盖子串#

最小覆盖子串

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);
    }
};
全部评论

相关推荐

10-18 13:01
已编辑
西安理工大学 C++
小米内推大使:建议技能还是放上面吧,hr和技术面试官第一眼想看的应该是技能点和他们岗位是否匹配
点赞 评论 收藏
分享
挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务