【每日刷题】Day126
【每日刷题】Day126
🥕个人主页:开敲🍉
🔥所属专栏:每日刷题🍍
1. LCR 017. 最小覆盖子串 - 力扣(LeetCode)
//思路:滑动窗口 + 哈希表。
//一张图理解
class Solution {
public:
string minWindow(string s, string t)
{
string ans, tmp;
int flag1 = 0,flag2 = 0;
int hash1[128] = { 0 };
int hash2[128] = { 0 };
for (auto c : t)
{
hash1[c]++;
if(hash1[c]==1) flag2++;
}
for(int left = 0,right = 0;left<s.size(),right<s.size();right++)
{
tmp.push_back(s[right]);
if(hash1[s[right]])
{
hash2[s[right]]++;
if(hash2[s[right]]==hash1[s[right]]) flag1++;
}
while(flag1==flag2)//有效字符串
{
if(ans=="") ans = tmp;//更新结果
else ans = ans.size()<tmp.size()?ans:tmp;
if(hash2[s[left]]&&hash2[s[left]]==hash1[s[left]]) flag1--;
hash2[s[left]]--;
left++;
tmp.erase(0,1);
while(left<s.size()&&!hash1[s[left]])//定位到下一个有效字符位置
{
left++;
tmp.erase(0,1);
}
}
}
return ans;
}
};
原文地址:https://blog.csdn.net/2301_78022459/article/details/142359517
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!