leetcode 76. Minimum Window Substring

Posted ymjyqsx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 76. Minimum Window Substring相关的知识,希望对你有一定的参考价值。

https://www.cnblogs.com/grandyang/p/4340948.html

O(n)的时间复杂度

滑动窗口

存储t中所有的字符和对应出现的次数。然后从s的头部开始滑动,遇到一个t中的字符就减一次,并且只要是次数大于0的情况,肯定是成功匹配了一个字符。直到所有成功匹配的字符个数等于t的个数,实际上也就是全都匹配了,再滑动最左边的位置。如果有一个字符的次数大于0了,说明现在滑动的位置已经缺字符了,又继续滑动右边的边界。

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

 

以上是关于leetcode 76. Minimum Window Substring的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode76.Minimum Window Substring

LeetCode in Python 76. Minimum Window Substring

leetcode 76. Minimum Window Substring

Leetcode 76: Minimum Window Substring

leetcode 76-Minimum Window Substring(hard)

leetcode76 Minimum Window Substring