您的位置:首页 > 其它

[Leetcode]Minimum Window Substring

2015-09-02 22:34 369 查看
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 emtpy 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:
/*algorithm: sliding window
1)find sub string s[l..r] include T's char set
2)slide window ,and update the sub string
time O(n) space O(1)
*/
bool containT(int S[58],int T[58]){
for(int i = 0;i < 58;i++){
if(S[i] < T[i])return false;
}
return true;
}
//'a':97, 'A':65
string minWindow(string s, string t) {
int len = INT_MAX,start;
int tmap[58]={0},smap[58]={0};
for(int k = 0;k < t.size();k++)tmap[t[k]-'A']++;
for(int i = 0,j = 0;j < s.size();j++){

4000
smap[s[j]-'A']++;
while(containT(smap,tmap)){
if((j-i+1) < len){
len = j-i+1;
start = i;
}
smap[s[i]-'A']--;
++i;
}
}
return len == INT_MAX?"":s.substr(start,len);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 算法