• 30 Day Challenge Day 11 | Leetcode 76. Minimum Window Substring


    题解

    双指针法,移动窗口法(Sliding Window)

    很重要的题。

    这道题要求地很细,移动窗口的时候,要同时记录,开始位置、长度和包含目标字符的个数count。

    class Solution {
    public:
        string minWindow(string s, string t) {
            int min_start = 0, min_len = INT_MAX;
            int start = 0, end = 0;
            int count = t.size();
    
            unordered_map<char, int> m;
            for(char c : t) m[c]++;
    
            while(end < s.size()) {
                if(m[s[end]] > 0) count--;
                m[s[end]]--;
                
                while(count == 0) {
                    m[s[start]]++;
                    
                    if(end-start+1 < min_len) {
                        min_start = start;
                        min_len = end-start+1;
                    }
                    
                    if(m[s[start]] > 0) count++;
                    start++;
                }
    
                end++;
            }
    
            if(min_len == INT_MAX) return "";
            
            return s.substr(min_start, min_len);
        }
    };
    
  • 相关阅读:
    bzoj1914
    bzoj3144
    bzoj2756
    poj3177
    一些比较水的题目
    bzoj2282
    屯题50AC纪念
    Base64解码中文部分中文乱码的原因
    随机生成36位字符串
    jQuery判断某个元素是否存在某个样式
  • 原文地址:https://www.cnblogs.com/casperwin/p/13698872.html
Copyright © 2020-2023  润新知