当前位置: 首页 > news >正文

11 最小字符子串

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。

注意:

  • 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
  • 如果 s 中存在这样的子串,我们保证它是唯一的答案。

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"
输出:"BANC"
解释:最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。

示例 2:

输入:s = "a", t = "a"
输出:"a"
解释:整个字符串 s 是最小覆盖子串。

class Solution {
public:string minWindow(string s, string t) {int n = s.size(), m = t.size();vector<int> res(2, INT_MAX);unordered_map<char, int> h;unordered_map<char, int> hs;for(auto e : t) hs[e]++;int cnt = 0;for(int i = 0, j = 0; i < n; i++){h[s[i]]++;if(hs.find(s[i]) != hs.end()){if(h[s[i]] == hs[s[i]]) cnt++; // 统计当前s中可以匹配t的字符个数}while(cnt == hs.size()) // 可以匹配所有字符时,说明我们找到了一个合法子串{// 尝试更新左端点找到一个最短的子串h[s[j]]--;if(hs.find(s[j]) != hs.end()){if(h[s[j]] < hs[s[j]]) // 左端点的字符更新后如果无法满足和t匹配更新答案和种类数{cnt--;if(i - j + 1 < res[0]){res[0] = i - j + 1;res[1] = j;}}}j++;}}if(res[0] == INT_MAX) return ""; // 无法匹配当前的t字符串return s.substr(res[1], res[0]);}
};作者:稳住心态
链接:https://leetcode.cn/problems/minimum-window-substring/solutions/2583869/ling-shen-tao-lun-guo-lai-de-luo-ji-jian-px52/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

  • 双目测距工程Stereo-Vision-master学习笔记
  • ElasticSearch扫盲概念篇[ES系列] - 第500篇
  • Scrum的工件
  • vlc播放rtsp视频流
  • Node.js基础知识点(四)
  • Python - Bert-VITS2 语音推理服务部署
  • 【第七在线】打破传统束缚:智能商品计划助力服装企业创新发展
  • Go新项目-为何选Gin框架?(0)
  • 【贪心】数组大小减半
  • MySQL基础笔记(6)函数
  • 第一章 通信职业道德
  • 性能压力测试:企业成功的关键要素
  • linux 文件打包 / 分割 / 组合 / 解压
  • 【Golang】二进制字符串转换为数字
  • 通过IP地址识别风险用户
  • 收藏网友的 源程序下载网
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 345-反转字符串中的元音字母
  • CSS实用技巧干货
  • express.js的介绍及使用
  • JS题目及答案整理
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 闭包--闭包之tab栏切换(四)
  • 大整数乘法-表格法
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 聊聊flink的TableFactory
  • 使用Gradle第一次构建Java程序
  • 我感觉这是史上最牛的防sql注入方法类
  • 中文输入法与React文本输入框的问题与解决方案
  • MPAndroidChart 教程:Y轴 YAxis
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​queue --- 一个同步的队列类​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #1014 : Trie树
  • #laravel 通过手动安装依赖PHPExcel#
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (4)事件处理——(7)简单事件(Simple events)
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)创业家杂志:UCWEB天使第一步
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net mvc 获取url中controller和action
  • .NET 表达式计算:Expression Evaluator
  • .net中的Queue和Stack
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @Autowired自动装配
  • [1127]图形打印 sdutOJ
  • [145] 二叉树的后序遍历 js
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory