您的位置:首页 > 文旅 > 美景 > 网页微信看朋友圈_免费推广的途径_策划公司_网站开发工程师

网页微信看朋友圈_免费推广的途径_策划公司_网站开发工程师

2024/12/28 13:16:06 来源:https://blog.csdn.net/2302_80652761/article/details/144007059  浏览:    关键词:网页微信看朋友圈_免费推广的途径_策划公司_网站开发工程师
网页微信看朋友圈_免费推广的途径_策划公司_网站开发工程师

题目链接:76. 最小覆盖子串 

 

算法实现,利用双指针,滑动窗口进行解决,

利用两个哈希表进行解决,讲字符串t全部放入一个哈希表中,

然后利用滑动窗口对字符串s进行插入删除操作,

利用一个变量count来记录有效字符

 直接看代码注释:

class Solution {
public:string minWindow(string s, string t) {map<char, int> h1;for (auto e : t) h1[e]++;map<char, int> h2;int retleft = 0;int ret = INT_MAX;for (int left = 0, right = 0, count = 0; right < s.size(); right++){//如果有效字符数和t.size()不相同,就一直进窗口,直到相同h2[s[right]]++;if (h2[s[right]] <= h1[s[right]]) count++;//判断,如果有效字符数和t.size()相同,就进循环判断while (count == t.size()){//如果此时位置处在有效字符上,就直接进行判断范围是否为较小范围//因为此时有效字符相同,且left位置刚好是有效字符,那么此时[left,right]一定有效if (h1.count(s[left])){if (right - left + 1 < ret){//记录最小范围 retleft = left;ret = min(ret, right - left + 1);}}//移动left,缩小区间 ,继续寻找更小范围if (h2[s[left]] <= h1[s[left]]) count--;h2[s[left]]--;left++;}}if(ret == INT_MAX) return "";//如果此时ret == INT_MAX,那么此时一定没找到,返回空return s.substr(retleft,ret);//直接利用substr获取出最小范围的字符串}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com