您的位置:首页 > 其它

[leetcode] Minimum Window Substring

2013-08-15 21:07 453 查看
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 {
short charset[128];
short charcount[128];
public:
string minWindow(string S, string T) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int lengths=S.size();
int lengtht=T.size();
if(lengths==0 || lengtht==0)
return "";
int count=lengtht;
memset(charset,0,sizeof(int)*128);
memset(charset,0,sizeof(int)*128);
int start,end,minstart,minend,minSize;
start=0,end=0,minstart=0,minend=lengths,minSize=INT_MAX;
for(int i=0 ; i<lengtht ; i++){
charset[T[i]]++;
charcount[T[i]]++;
}
for(end=0 ; end<lengths ; end++){
if(charset[S[end]] && (--charcount[S[end]])>=0)
count--;
if(count==0){
for(;;){
if(charset[S[start]]){
if(charcount[S[start]]<0)
charcount[S[start]]++;
else
break;
}
start++;
}
if(minSize>end-start+1){
minSize=end-start+1;
minstart=start;
}
}
}
if(minSize==INT_MAX)
return "";
string ret(S,minstart,minSize);
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: