题解 | #牛群名字覆盖#

牛群名字覆盖

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

#include <climits>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @param t string字符串 
     * @return string字符串
     */
    bool judge(map<char,int> t, map<char,int> s)\
    {
        for(auto it=t.begin(); it!=t.end(); ++it)
        {
            if(it->second>s[it->first])
                return false;
        }

        return true;
    }

    string minWindow(string s, string t) {
        // write code here

        map<char,int> t_s, t_t;

        for(auto ch:t)
            ++t_t[ch];

        int min_len = INT_MAX;
        int left=0, right=0;
        int len = s.size();
        int start = 0;
        
        while(right<len)
        {
            if(t_t[s[right]]>0)
            {
                ++t_s[s[right]];
            }
            ++right;
            while(judge(t_t, t_s))
            {
                if(right-left+1<min_len)
                {
                    min_len = right-left+1;
                    start = left;
                }

                if(t_t[s[left]])
                    --t_s[s[left]];
                
                ++left;
            }
        }

        return min_len==INT_MAX ? "" : s.substr(start,min_len);
    }
};

虚数五行区解题中心 文章被收录于专栏

非淡泊无以明志,非宁静无以致远

全部评论

相关推荐

02-11 12:20
门头沟学院 Java
面试中的青提很胆小:我不信有比我们学校更逆天的,计算机专业就业第一位是我们学校二餐厅的打印店
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务