Minimum Window Substring

来源:互联网 发布:淘宝武士刀 编辑:程序博客网 时间:2024/05/16 15:00

尾指针不断往后扫,当扫到有一个窗口包含了所有T的字符,头指针收缩头指针。得到窗口最小的情况


class Solution {public:    string minWindow(string S, string T) {        int slen = S.size();        int tlen = T.size();                //  record T[i]        int need[256] = {0},has[256] = {0}, cnt = 0, ans = slen+1, mBegin, mEnd ;        for(int i = 0; i < tlen; i++)              ++need[T[i]];        for(int begin = 0, end = 0; end < slen; end++){          if(need[S[end]] == 0) continue;           //find T[i]          ++has[S[end]];          if(has[S[end]] <= need[S[end]])            ++cnt;                                     //number of map          if(cnt == tlen){            while(need[S[begin]] == 0 || has[S[begin]]  > need[S[begin]]){               if(has[S[begin]] > need[S[begin]])                   --has[S[begin]];                begin++;            }            int l = end - begin+1;            if(l < ans){               mBegin = begin;               mEnd = end;               ans = l;            }          }        }        return ans <= slen?S.substr(mBegin, mEnd- mBegin+1):"";    }};


0 0
原创粉丝点击