您的位置:首页 > 其它

LeetCode – Refresh – Minimum Window Substring

2015-03-21 08:03 417 查看
Notes:

1. When check left shifting, do not use continue, but break it!!! Otherwise, you wil fall into infinite loop

2. Initialize the map with T, not S!!!!

class Solution {
public:
string minWindow(string S, string T) {
int len = S.size(), count = 0, length = INT_MAX;
string result;
if (len == 0 || len < T.size()) return "";
unordered_map<char, int> dict;
for (char c : T) {
if (dict[c]) dict[c]++;
else dict[c] = 1;
}
for (int left = 0, right = 0; right < len; right++) {
if (dict.find(S[right]) != dict.end()) {
dict[S[right]]--;
if (dict[S[right]] == 0) {
count++;
}
}

while (left < len) {
if (dict.find(S[left]) != dict.end() && dict[S[left]] >= 0) break;
if (dict.find(S[left]) != dict.end()) {
dict[S[left]]++;
}
left++;
}

if (count == dict.size() && length > (right - left + 1)) {
result = S.substr(left, right-left+1);
length = right - left + 1;
}
}
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: