标签:
Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).
For example,
S = "ADOBECODEBANC"
T = "ABC"
Minimum window is "BANC"
.
Note:
If there is no such window in S that covers all characters in T, return the empty string ""
.
If there are multiple such windows, you are guaranteed that there will always be only one unique minimum window in S.
class Solution { public: string minWindow(string s, string t) { unordered_map<char,int> m; for(char c : t){ m[c]++; } int sL = s.length(); int counter = t.length(); int start = 0,end = 0; int minStart = 0,minLen = INT_MAX; while(end < sL){ if(m[s[end]]>0){ counter--; } m[s[end]]--; end++; while(counter == 0){ if(end-start < minLen){ minStart = start; minLen = end-start; } m[s[start]]++; if(m[s[start++]] > 0){ counter++; } } } if(minLen < INT_MAX) return s.substr(minStart,minLen); else return ""; } };
标签:
原文地址:http://www.cnblogs.com/wxquare/p/5878117.html