• [leetcode]Minimum Window Substring


    双指针。。。经典题。。。

    注意一些边界TAT

    class Solution {
    public:
        string minWindow(string S, string T) {
            int start = 0;
            int end = 0;
            vector<int>cnt(256,0);
            vector<int>inc(256,0);
            int lens = S.size();
            int lent = T.size();
            for(int i = 0 ; i < lent ; i++) cnt[T[i]] ++;
            
            int tmp = 0;
            int minl = INT_MAX;
            int mins,mine;
            while(end <= lens){
        
                if(tmp == lent){
        
                    if(end - start < minl){
                        minl = end - start;
                        mins = start;
                        mine = end;
                        
                    }
                    
                    if(inc[S[start]] > cnt[S[start]]) {
                        inc[S[start]] --;
                    }else if(inc[S[start]] &&inc[S[start]] <= cnt[S[start]]){
                        inc[S[start]] --;
                        tmp--;
                    }
                    start ++;
                    continue;
                    
                }
                if(cnt[S[end]] == 0){
                    end++;
                    continue;
                }
                if(inc[S[end]] < cnt[S[end]]){
                    tmp ++;
                }
                inc[S[end]]++;
                end++;
                
            }
            if(minl == INT_MAX)return "";
            return S.substr(mins , minl);
        }
    };
  • 相关阅读:
    python-IO编程
    DNS解析流程
    python-模块
    HTTP协议
    python-函数式编程
    nmap扫描结果的6种端口状态
    python-高级特性
    python-函数
    python-基础
    上传之路
  • 原文地址:https://www.cnblogs.com/x1957/p/3502932.html
Copyright © 2020-2023  润新知