76. Minimum Window Substring
Input: S = "ADOBECODEBANC", T = "ABC"
Output: "BANC"// Sliding window
string minWindow(string s, string t) { // time: O(m + n); space: (1)
vector<int> record(128, 0);
// initialization
for (char c : t) ++record[c];
int begin = 0, end = 0, head = 0, d = numeric_limits<int>::max(), counter = t.length();
while (end < s.length()) {
if (record[s[end++]]-- > 0) {
counter--;
}
while (counter == 0) {
if (end - begin < d) {
head = begin;
d = end - begin;
}
if (record[s[begin++]]++ == 0) {
counter++;
}
}
}
return (d == numeric_limits<int>::max()) ? "" : s.substr(head, d);
}Last updated