zoukankan      html  css  js  c++  java
  • 76. Minimum Window Substring

    最小窗口字串

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

    #include<iostream>
    #include<string>
    #include<unordered_map>
    using namespace std;
    class Solution {
        void print_dict(unordered_map<char,int>& letterCnt){
            for(auto it=letterCnt.begin();it!=letterCnt.end();++it){
                cout<<it->first<<" "<<it->second<<" ";
            }
            cout<<"
    ";
        }
    public:
        string minWindow(string s, string t) {
            string res="";
            unordered_map<char,int> letterCnt;
            int left=0,cnt=0,minLen=INT_MAX;
            for(auto a:t) {
                letterCnt[a]++;
            }
            for(int i=0;i<s.size();++i){
                printf("%d
    ",cnt);
                print_dict(letterCnt);
                printf("%c
    ",s[i]);
                if(--letterCnt[s[i]]>=0) cnt++;
                while(cnt==t.size()){
    
                    if(i-left+1<minLen){
                        minLen=i-left+1;
                        res=s.substr(left,minLen);
                    }
    
                    if(++letterCnt[s[left]]>0){
                        cnt--;
                    }
                    left++;
                }
            }
            return res;
        }
    };
    
    int main(){
        Solution solution;
        std::cout<<solution.minWindow("ADBANC","ABC");
        return 0;
    }

     可以用数组代替hashmap

    //unordered_map<char,int> letterCnt;
    vector letterCnt(256,0);

  • 相关阅读:
    vim 的配置文件
    linux bash 的自动补全
    linux ping 命令
    linux 安装ifconfig
    dos exist 命令
    linux 用户的添加,组的添加,以及查看
    if else 的.bat 文件
    For 的.bat文件
    rmdir 的.bat文件
    dos set 命令
  • 原文地址:https://www.cnblogs.com/learning-c/p/9752091.html
Copyright © 2011-2022 走看看