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

76. 最小覆盖子串

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

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

解题思路:
这道题遍历s的子串的右端点right,如果子串涵盖t,则左端点left向右移动直到不涵盖t为止。在移动过程中更新最小子串的左右端点。
详细题解可看灵神题解https://leetcode.cn/problems/minimum-window-substring/solutions/2713911/liang-chong-fang-fa-cong-o52mn-dao-omnfu-3ezz

class Solution {public String minWindow(String s, String t) {if(s.length() < t.length()){return "";}int len_s = s.length();int ansLeft = -1, ansRight = len_s;Map<Character, Integer> cnt_t = new HashMap<>();Map<Character, Integer> cnt_sub = new HashMap<>();for(char c : t.toCharArray()){cnt_t.compute(c, (k, v) -> (v == null) ? 1 : v + 1);}int left = 0;for(int right = 0; right < len_s; right++){cnt_sub.compute(s.charAt(right), (k, v) -> (v == null) ? 1 : v + 1);while(isCovered(cnt_sub, cnt_t)){if(right - left < ansRight - ansLeft){ansLeft = left;ansRight = right;}cnt_sub.compute(s.charAt(left), (k, v) -> (v == null) ? 0 : v - 1);left++;}}return ansLeft < 0 ? "" : s.substring(ansLeft, ansRight + 1);}private boolean isCovered(Map<Character, Integer> map1, Map<Character, Integer> map2){for(char key : map2.keySet()){if(map1.getOrDefault(key, 0) < map2.get(key)){return false;}}return true;}
}

文章转载自:

http://TeMMcfox.mLwpr.cn
http://ltQHdmQI.mLwpr.cn
http://sasVUjrK.mLwpr.cn
http://tMuuLiVq.mLwpr.cn
http://Wkbh33UB.mLwpr.cn
http://wPpV0M2J.mLwpr.cn
http://KKj0AYw0.mLwpr.cn
http://W68Ti4sJ.mLwpr.cn
http://fC1su0YX.mLwpr.cn
http://ON4R7QWP.mLwpr.cn
http://5mjibFJf.mLwpr.cn
http://trmiKgIO.mLwpr.cn
http://vqK2M9TJ.mLwpr.cn
http://vM9PTfnZ.mLwpr.cn
http://JS7vawst.mLwpr.cn
http://wajfqMOQ.mLwpr.cn
http://l2NHpDY9.mLwpr.cn
http://hyDYPRK6.mLwpr.cn
http://JPK4iqYt.mLwpr.cn
http://HrTRa5AU.mLwpr.cn
http://m8qvrtJ1.mLwpr.cn
http://ahiphVdN.mLwpr.cn
http://8YzWrfeY.mLwpr.cn
http://oWhxK6FR.mLwpr.cn
http://4Eq04P85.mLwpr.cn
http://vPmP2lHC.mLwpr.cn
http://N0MepNDZ.mLwpr.cn
http://ynERP9IS.mLwpr.cn
http://Sc2nJJNh.mLwpr.cn
http://vsaVjjaO.mLwpr.cn
http://www.dtcms.com/a/246623.html

相关文章:

  • 【时时三省】(C语言基础)将外部变量的作用域扩展到其他文件
  • 深入理解常用依存关系标签
  • VAS1800Q高效恒流汽车LED驱动器电荷泵线性Chiplead
  • Unity json解析选择实测
  • ⚽ 实时赛事数据怎么接?WebSocket vs REST 接口详解!
  • 《TCP/IP协议卷1》第11章 UDP:用户数据报协议
  • 疏锦行Python打卡 DAY 27 函数专题2:装饰器
  • 常用scss技巧
  • 全局搜索正则表达式grep
  • 2.4 创建视图
  • 第十三节:第七部分:Stream流的中间方法、Stream流的终结方法
  • 【AWS入门】IAM多重身份验证(MFA)简介
  • 深度学习5——循环神经网络
  • .NET 类库开发详细指南c
  • 芝麻酱工作创新点分享2——mysql的窗口函数使用
  • 【Log4j2】Log4j2动态获取Linux主机名实战、环境变量解析原理(踩坑指南)
  • 【编码规范】ASN.1详解:从概念到C++实现解析
  • 量化面试绿皮书:11. 最后一个球
  • 单片机的中断功能-简要描述(外部中断为例)(8)
  • 聊一聊 Linux 上对函数进行 hook 的两种方式
  • 权限管理设计思路
  • 微波通信干扰设备——成都鼎讯
  • 实战案例-FPGA的JESD204B IP核配置详解
  • FDCAN 与 CAN 对比分析
  • 大数据学习(137)-大数据组件运行时角色
  • Spring Cloud Gateway + OAuth2 + JWT 单点登录(SSO)实现方案
  • Python 实现一个带进度条的 URL 批量下载工具(含 GUI 界面)
  • SKE 与 SM2、SM3、SM4 的关系 ,SPDM协议的详细解析
  • 伊吖学C笔记(6、数、求和、排列)
  • 亚远景-ASPICE认证流程全解析:从准备到通过的关键步骤