您的位置:首页 > 职场人生

[LeetCode] Minimum Window Substring

2013-01-29 20:35 393 查看
class Solution {
public:
string minWindow(string S, string T) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int m = S.size();
int n = T.size();

vector<int> TC(256);

for (int i = 0; i < n; i++)
TC[T[i]]++;

int chs = 0;

for (int i = 0; i < 256; i++)
if (TC[i]) chs++;

int pos = 0;
int len = INT_MAX;

int i = 0;
for (int j = 0; j < m; j++) {
char ch = S[j];
TC[ch]--;

if (TC[ch] == 0) chs--;

while (TC[S[i]] < 0) {
TC[S[i]]++;
i++;
}

if (chs == 0 && j - i + 1 < len) {
len = j - i + 1;
pos = i;
}
}

return len == INT_MAX ? "" : S.substr(pos, len);
}
};


Small Case: 12ms

Large Case: 56ms

Time: O(n)

Space: O(n)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息