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. 最小覆盖子串(滑动窗口)相关推荐

  1. LeetCode 76. 最小覆盖子串 (滑动窗口哈希表)

    LeetCode 76. 最小覆盖子串 思路: 准备一个map1记录字符串t(字符, 字符个数) 准备一个map2记录在s的窗口中所包含的t串字符(字符,字符个数) 左端点收缩条件:窗口内已经覆盖了t ...

  2. Leetcode 76最小覆盖子串77组合78子集

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...

  3. LeetCode - 76 最小覆盖子串

    目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 76. 最小覆盖子串 - 力扣(LeetCode) 题目描述 给你一个字符串 s .一个字符串 t .返回 s 中涵盖 t 所有字符 ...

  4. [Leedcode][JAVA][第76题][最小覆盖子串]滑动窗口]

    [问题描述][第76题][最小覆盖子串][中等] 给你一个字符串 S.一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串.示例:输入: S = "ADOBECODEBAN ...

  5. leetcode 76 最小覆盖子串

    参考资料: https://leetcode-cn.com/problems/minimum-window-substring/solution/zui-xiao-fu-gai-zi-chuan-by ...

  6. java最小子串覆盖_LeetCode 76. 最小覆盖子串

    LeetCode 76. 最小覆盖子串 题目 给你一个字符串 S.一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串. 示例: 输入: S = "ADOBECODEBAN ...

  7. 【LeetCode】【HOT】76. 最小覆盖子串(滑动窗口)

    [LeetCode][HOT]76. 最小覆盖子串 文章目录 [LeetCode][HOT]76. 最小覆盖子串 package hot;public class Solution76 {public ...

  8. LeetCode高频题76. 最小覆盖子串:欠账还债还款问题,子串考虑i开头的情况所有答案更新一波

    LeetCode高频题76. 最小覆盖子串:欠账还债还款问题,子串考虑i开头的情况所有答案更新一波 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从 ...

  9. 【LeetCode】76. 最小覆盖子串 (Java代码)

    [LeetCode]76. 最小覆盖子串 (Java代码) 来源:力扣(LeetCode) 题目链接:https://leetcode.cn/problems/minimum-window-subst ...

最新文章

  1. s3 aws_您需要了解的有关AWS S3的所有信息
  2. puppet recurse 导致的性能问题一例
  3. 性能测试知多少--系统计数器与硬件分析
  4. 如何选择最优路径完成云原生上云?听这场阿里云特别分享【云原生技术与最佳实践】
  5. hdu5399(模拟)
  6. 打印modal框中在线生成的二维码
  7. 二维数组按行排序C语言,二维数组对每一行进行排序。。
  8. PHP array_merge_recursive()函数与示例
  9. 改善深层神经网络:超参数调整、正则化以及优化 —— 3.1调试处理
  10. linux怎么添加中文服务器,linux不支持中文怎么办_网站服务器运行维护
  11. Composition-API
  12. springboot读取properties(yml)的几种常用方式
  13. 新建UE4 c++类
  14. 应用程序正常初始化(Oxc000007b)失败
  15. 编写C\Cpp程序中函数声明定义中的常见错误
  16. c语言汇率转换代码_基于C语言实现的货币转换器.doc
  17. 如何去理解同花顺l2接口?
  18. 2023南宁师范大学计算机考研信息汇总
  19. 单片机控制蜂鸣器和弦音发音程序
  20. 判断一个序列是否可由给定序列通过栈操作获得

热门文章

  1. caffe专题五——回归中——检测框架
  2. 小程序 长按api_高质量的微信小程序样式模板应该长什么样?
  3. 驱动框架1——什么是驱动框架?
  4. intel——5G的通信网络架构及平台
  5. 字符串、字符数组、字符串数组
  6. mysql设置不区分大小写
  7. UILabel添加图片之富文本的简单应用
  8. 基于PHP实现一个简单的在线聊天功能(轮询ajax )
  9. 【leetcode刷题笔记】Excel Sheet Column Number
  10. .net 2.0 制作 柱状图