LeetCode 76. 最小覆盖子串(滑动窗口)
1. 题目
给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。
示例:
输入: S = "ADOBECODEBANC", T = "ABC"
输出: "BANC"说明:
如果 S 中不存这样的子串,则返回空字符串 ""。
如果 S 中存在这样的子串,我们保证它是唯一的答案。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-window-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 滑动窗口
类似题目:LeetCode 727. 最小窗口子序列(滑动窗口)
- 对
t
中的字符计数 - 设置窗口(left,right),一开始right右移,直到窗口包含所有
t
中字符 - 然后开始右移左端点,字符移除,直到有效的
t
字符数不够了,再返回上面循环,右移右端点
class Solution {public:string minWindow(string s, string t) {if(s == "" || t == "" || s.size() < t.size())return "";unordered_map<char,int> m;for(char c : t)m[c]++;string ans;int left = 0, right = 0, len = 0, minLen = INT_MAX;for( ; right < s.size(); ++right){m[s[right]]--;//希望t中的字符计数为0(为正,说明还不够,为负,说明多了)if(m[s[right]]>=0)//不存在t中的字符计数是负的,存在t中,且多出的,计数也为负++len;while(len == t.size())//窗口包含所有的t的字符了{if(right-left+1 < minLen)//更新最小窗口长度{minLen = right-left+1;ans = s.substr(left,minLen);}m[s[left]]++;//缩短left,计数+1(非t字符趋近0,t中字符计数由-或者0往上增加)if(m[s[left]] > 0)//t中的字符才有可能大于0(目标t字符数不够)--len;//窗口包含t的字符数-1left++;//缩短左窗口,直到len不等于t的长度(有效字符数不够了)}}return ans;}
};
LeetCode 76. 最小覆盖子串(滑动窗口)相关推荐
- LeetCode 76. 最小覆盖子串 (滑动窗口哈希表)
LeetCode 76. 最小覆盖子串 思路: 准备一个map1记录字符串t(字符, 字符个数) 准备一个map2记录在s的窗口中所包含的t串字符(字符,字符个数) 左端点收缩条件:窗口内已经覆盖了t ...
- Leetcode 76最小覆盖子串77组合78子集
新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...
- LeetCode - 76 最小覆盖子串
目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 76. 最小覆盖子串 - 力扣(LeetCode) 题目描述 给你一个字符串 s .一个字符串 t .返回 s 中涵盖 t 所有字符 ...
- [Leedcode][JAVA][第76题][最小覆盖子串]滑动窗口]
[问题描述][第76题][最小覆盖子串][中等] 给你一个字符串 S.一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串.示例:输入: S = "ADOBECODEBAN ...
- leetcode 76 最小覆盖子串
参考资料: https://leetcode-cn.com/problems/minimum-window-substring/solution/zui-xiao-fu-gai-zi-chuan-by ...
- java最小子串覆盖_LeetCode 76. 最小覆盖子串
LeetCode 76. 最小覆盖子串 题目 给你一个字符串 S.一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串. 示例: 输入: S = "ADOBECODEBAN ...
- 【LeetCode】【HOT】76. 最小覆盖子串(滑动窗口)
[LeetCode][HOT]76. 最小覆盖子串 文章目录 [LeetCode][HOT]76. 最小覆盖子串 package hot;public class Solution76 {public ...
- LeetCode高频题76. 最小覆盖子串:欠账还债还款问题,子串考虑i开头的情况所有答案更新一波
LeetCode高频题76. 最小覆盖子串:欠账还债还款问题,子串考虑i开头的情况所有答案更新一波 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从 ...
- 【LeetCode】76. 最小覆盖子串 (Java代码)
[LeetCode]76. 最小覆盖子串 (Java代码) 来源:力扣(LeetCode) 题目链接:https://leetcode.cn/problems/minimum-window-subst ...
最新文章
- s3 aws_您需要了解的有关AWS S3的所有信息
- puppet recurse 导致的性能问题一例
- 性能测试知多少--系统计数器与硬件分析
- 如何选择最优路径完成云原生上云?听这场阿里云特别分享【云原生技术与最佳实践】
- hdu5399(模拟)
- 打印modal框中在线生成的二维码
- 二维数组按行排序C语言,二维数组对每一行进行排序。。
- PHP array_merge_recursive()函数与示例
- 改善深层神经网络:超参数调整、正则化以及优化 —— 3.1调试处理
- linux怎么添加中文服务器,linux不支持中文怎么办_网站服务器运行维护
- Composition-API
- springboot读取properties(yml)的几种常用方式
- 新建UE4 c++类
- 应用程序正常初始化(Oxc000007b)失败
- 编写C\Cpp程序中函数声明定义中的常见错误
- c语言汇率转换代码_基于C语言实现的货币转换器.doc
- 如何去理解同花顺l2接口?
- 2023南宁师范大学计算机考研信息汇总
- 单片机控制蜂鸣器和弦音发音程序
- 判断一个序列是否可由给定序列通过栈操作获得