Minimum Window Substring
Posted wxquare的学习笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Minimum Window Substring相关的知识,希望对你有一定的参考价值。
Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).
For example,
S = "ADOBECODEBANC"
T = "ABC"
Minimum window is "BANC"
.
Note:
If there is no such window in S that covers all characters in T, return the empty string ""
.
If there are multiple such windows, you are guaranteed that there will always be only one unique minimum window in S.
class Solution { public: string minWindow(string s, string t) { unordered_map<char,int> m; for(char c : t){ m[c]++; } int sL = s.length(); int counter = t.length(); int start = 0,end = 0; int minStart = 0,minLen = INT_MAX; while(end < sL){ if(m[s[end]]>0){ counter--; } m[s[end]]--; end++; while(counter == 0){ if(end-start < minLen){ minStart = start; minLen = end-start; } m[s[start]]++; if(m[s[start++]] > 0){ counter++; } } } if(minLen < INT_MAX) return s.substr(minStart,minLen); else return ""; } };
以上是关于Minimum Window Substring的主要内容,如果未能解决你的问题,请参考以下文章