码迷,mamicode.com
首页 > Windows程序 > 详细

leetcode 76. Minimum Window Substring

时间:2019-05-03 22:34:19      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:http   一个   bsp   span   时间复杂度   .com   nim   while   头部   

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

标签:http   一个   bsp   span   时间复杂度   .com   nim   while   头部   

原文地址:https://www.cnblogs.com/ymjyqsx/p/10806836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!