Leetcode-076-Minimum Window Substring

这种类型的题目之前也遇到过,和字符串匹配不同的是,这里只需要包含目标字符串的各个字符即可,不用考虑顺序以及是否相邻。因此不必用DP,使用滑动窗口更方便。

代码如下:

class Solution {
public:
    string minWindow(string s, string t){
        string res = "";
        int letterCnt[128] = {0};
        int left = 0, cnt = 0, minLen = INT_MAX;
        for (char c : t) ++letterCnt[c];
        for (int i = 0; i < s.size(); ++i) {
            if (--letterCnt[s[i]] >= 0) ++cnt;
            while (cnt == t.size()) {
                if (minLen > i - left + 1) {
                    minLen = i - left + 1;
                    res = s.substr(left, minLen);
                }
                if (++letterCnt[s[left]] > 0) --cnt;
                ++left;
            }
        }
        return res;
    }
};

你可能感兴趣的:(Leetcode-076-Minimum Window Substring)