zoukankan      html  css  js  c++  java
  • 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);
        }
    };
    
  • 相关阅读:
    spider
    python 2.X
    django 创建项目
    NameError: name 'pip' is not defined
    异常捕获
    @property
    node-Telnet
    ES6-模块化
    高级排序算法之双路快速排序
    高级排序算法之快速排序
  • 原文地址:https://www.cnblogs.com/casperwin/p/13698872.html
Copyright © 2011-2022 走看看