注:是2020-5-31 字节夏令营第一场笔试中的一道类似题~
代码:
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 28 29
| class Solution { public: string minWindow(string s, string t) { vector<int> map(128); int left = 0, right = 0, need = t.size(), minStart = 0, minLen = INT_MAX; for(char ch : t) ++map[ch]; while(right < s.size()) { if(map[s[right]] > 0) --need; --map[s[right]]; ++right; while(need == 0) { if(right - left < minLen) { minStart = left; minLen = right - left; } map[s[left]]++; if(map[s[left]] > 0) ++need; ++left; } } if(minLen != INT_MAX) return s.substr(minStart, minLen); return ""; } };
|