leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0076.cpp (732B)
0 class Solution {
1 public:
2 string minWindow(string s, string t) {
3 vector<int> remaining(128, 0);
4 for (char c : t)
5 remaining[c]++;
7 int required = t.size();
8 int min = INT_MAX, start = 0, left = 0, i = 0;
9 while (i <= s.size() && start < s.size()) {
10 if (required) {
11 if (i == s.size()) break;
12 if (--remaining[s[i++]] >= 0) required--;
13 } else {
14 if (i - start < min) {
15 min = i - start;
16 left = start;
17 }
18 if (++remaining[s[start++]] > 0) required++;
19 }
20 }
21 return min == INT_MAX ? "" : s.substr(left, min);
22 }
23 };