题解 | #最小覆盖子串#

最小覆盖子串

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

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param S string字符串
     * @param T string字符串
     * @return string字符串
     */
    bool chenck(unordered_map<char, int>& map) {
        for (auto i : map) {
            if (i.second > 0)
                return false;
        }
        return true;
    }

    string minWindow(string S, string T) {
        // write code here
        int l = 0, r = 0;
        int min_l = -1, min_r = 22222-1;
        unordered_map<char, int> map;
        for (char i : T) {
            map[i]++;
        }
        while (r < S.size()) {
            if (map.find(S[r]) != map.end()) {
                map[S[r]]--;
                while (chenck(map)) {
                    if ((r - l + 1) < (min_r - min_l + 1)) {
                        min_l = l;
                        min_r = r;
                    }
                    if (map.find(S[l]) != map.end()) {
                        map[S[l]]++;
                    }
                    ++l;
                }
            }
            ++r;
        }
        if (min_l == -1)
            return "";
         return string(S.begin()+min_l,S.begin()+min_r+1); 
    }
};

没想到半个小时内写了个困难。。。。。。

全部评论

相关推荐

03-26 15:18
已编辑
华北水利水电大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务