class Solution {
public:
string minWindow(string s, string t) {
int start=0;//start为在s中搜索的开始下标
int end=0;//end为在s中搜索的结束下标
int count=t.size();//count表示t中要在s中搜索的字符的个数
vector<int> map(128,0);//用来存储t中字符和 字符个数的映射
for(auto c:t)map[c]++;
int minstart=0;
int minlen=INT_MAX;
while(end<s.size())
{
if(map[s[end]]>0)//如果s[end]在t中则剩余要搜索的字符减少
count--;
map[s[end]]--;//如果s[end]不在t中则map[s[end]]变成负数
end++;
while(count==0)//寻找到了t中所有的字符
{
if(end-start<minlen)//更新最短window长度 更新start来寻找更短的window长度
{
minstart=start;
minlen=end-start;
}
map[s[start]]++;
if(map[s[start]]>0)//s[start]在t中则map[s[start]]>0 改变要在s中搜索的字符的个数
count++;
start++;
}
}
if(minlen!=INT_MAX)
return s.substr(minstart,minlen);
else
return "";
}
};
76. Minimum Window Substring
最新推荐文章于 2021-02-25 13:50:45 发布