1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| class Solution { public: unordered_map<char, int> pattern;
string minWindow(string src, string tt) { for (auto x : tt) { pattern[x]++; } int cnt = pattern.size();
string res; for (int i = 0, j = 0, c = 0; i < src.size(); ++i) { if (pattern[src[i]] == 1 ) c++; pattern[src[i]]--; while (c == cnt && pattern[src[j]] < 0) { pattern[src[j++]]++; } if (c == cnt) { if (res.empty() || res.size() > i - j + 1) res = src.substr(j, i - j + 1); } } return res; } };
|