題目:
https://leetcode.com/problems/minimum-window-substring/
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 30
| class Solution { public: string minWindow(string s, string t) { int tSize = t.length(); int sSize = s.length(); if(tSize > sSize) return ""; int min_len=0x3f3f3f3f, start_pos=-1; map<char, int> mp; int debt=tSize; for(int i=0; i<tSize; ++i) mp[t[i]]--;
for(int l=0, r=0; r<sSize; ++r){ if(++mp[s[r]] <= 0) debt--;
if(debt == 0){ while(mp[s[l]] > 0){ mp[s[l++]]--; } if(min_len > r-l+1){ min_len = r-l+1; start_pos = l; } } }
return min_len == 0x3f3f3f3f ? "" : s.substr(start_pos, min_len); } };
|