Minimum Window Substring
Thoughts
Code
/*
* @lc app=leetcode id=76 lang=cpp
*
* [76] Minimum Window Substring
*/
class Solution {
public:
string minWindow(string s, string t) {
int l = 0, r = 0, min_len = s.size(), cur_size = 0;
string res = "";
unordered_map<char, int> freq;
for (char c : t) {
if (!freq.count(c)) freq[c] = 0;
--freq[c];
}
while (r < s.size()) {
const auto cr = s[r];
if (!freq.count(cr)) freq[cr] = 0;
++freq[cr];
if (freq[cr] <= 0) {
++cur_size;
}
while (cur_size == t.size()) {
const auto cl = s[l];
if (r - l + 1 <= min_len) {
min_len = r - l + 1;
res = s.substr(l, min_len);
}
if (freq[cl] == 0) {
--cur_size;
}
--freq[cl];
++l;
}
++r;
}
return res;
}
};
Analysis
Previous395. Longest Substring with At Least K Repeating CharactersNext1004. Max Consecutive Ones III
Last updated