news 2026/7/11 2:44:34

JAVA练习280- 最小覆盖子串

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JAVA练习280- 最小覆盖子串

题目概览

给定两个字符串st,长度分别是mn,返回 s 中的最短窗口 子串,使得该子串包含t中的每一个字符(包括重复字符)。如果没有这样的子串,返回空字符串""

测试用例保证答案唯一。

示例 1:

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

示例 2:

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

示例 3:

输入:s = "a", t = "aa"输出:""解释:t 中两个字符 'a' 均应包含在 s 的子串中, 因此没有符合条件的子字符串,返回空字符串

提示:

  • m == s.length
  • n == t.length
  • 1 <= m, n <= 105
  • st由英文字母组成

来源:76. 最小覆盖子串 - 力扣(LeetCode)

解题分析

方法:滑动窗口

求最小子串其实就是看每个满足条件的滑动窗口长度最小,我们可以定义 i 和 j 一同指向第一个元素,当 i 和 j 范围内元素不满足条件,往右边移动;若满足条件,则得到一个初步的子串,由于 i 指向的元素不能不在 t 中,因此还要移动 i 直到不满足条件,这样就可以得到一个可能是最小的子串。然后继续移动 j,重复步骤即可。

看是否满足条件可以定义一个哈希map来存储 t 的字母和出现次数,然后比较当前子串字母和次数是否对的上即可。由于这里的字母都是大小写英文字母,我们也可以用 128 的数组来实现。

时间复杂度:O(n)
空间复杂度:O(k)

class Solution { public String minWindow(String s, String t) { int[] mapping = new int[128]; char[] cs = s.toCharArray(); char[] ct = t.toCharArray(); for (char c: ct) { mapping[c]++; } int tLen = ct.length, sLen = cs.length; int i = 0, j = 0; int[] temp = new int[128]; int minI = 0, minJ = sLen; while(i < sLen && j < sLen) { temp[cs[j]]++; while(isCovered(temp, mapping)) { if (j - i < minJ - minI) { minI = i; minJ = j; } temp[cs[i]]--; i++; } j++; } return minJ == sLen ? "" : s.substring(minI, minJ + 1); } public boolean isCovered(int[] cs, int[] ct) { for (int i = 'A'; i <= 'Z'; i++) { if (cs[i] < ct[i]) { return false; } } for (int i = 'a'; i <= 'z'; i++) { if (cs[i] < ct[i]) { return false; } } return true; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 2:44:18

(14)LeetCode 56. 合并区间

LeetCode 56. 合并区间 &#x1f4dd; 题目描述 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi]。请你合并所有重叠的区间&#xff0c;并返回一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间。 示例 1&…

作者头像 李华
网站建设 2026/7/11 2:42:10

【机器人路径规划】matlab遗传算法的机器人路径规划算法源码

基于遗传算法的机器人路径规划MATLAB源码 1、原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 【老生谈算法】基于遗传算法的机器人路径规划MATLAB源码.docx 2、算法详解: 算法的思路如下:取各障碍物顶点连线的中点为路径点,相…

作者头像 李华
网站建设 2026/7/11 2:42:00

跨越二十载的魔幻重逢 《奇迹 MU:荣耀出征》官方正版下载全指南

2002 年&#xff0c;《奇迹 MU》凭借突破性的 3D 画质与开创性的魔幻玩法闯入国内网游市场&#xff0c;勇者大陆的喷泉广场、冰风谷的漫天飞雪、亚特兰蒂斯的深海秘境&#xff0c;还有装备掉落时那声清脆的 “叮”&#xff0c;共同构成了 80、90 后玩家的青春集体记忆。二十余年…

作者头像 李华
网站建设 2026/7/11 2:40:56

CORTIS开源项目:老旧硬件上的深度学习模型优化部署实践

这次我们来看一个名为 CORTIS 的开源项目&#xff0c;从标题关键词来看&#xff0c;它似乎与模型训练、优化或特定硬件适配相关。这类项目通常关注的是如何在有限资源下实现模型的高效运行&#xff0c;特别是针对一些老旧或非主流硬件设备。CORTIS 项目最值得关注的点在于它对&…

作者头像 李华
网站建设 2026/7/11 2:40:23

Solar Energy (IF 7.188) 2024年热点解读:从光伏材料到电网整合的3大技术趋势

2024年太阳能技术前沿&#xff1a;从材料革新到系统集成的突破性趋势站在2024年的门槛回望&#xff0c;全球太阳能产业正经历着从量变到质变的关键跃迁。根据国际能源署最新报告&#xff0c;太阳能发电量在过去五年年均增长率达到22%&#xff0c;而这一数字背后是光伏材料效率的…

作者头像 李华
网站建设 2026/7/11 2:40:00

STM32 I2C 事件状态机解析:从 EV5 到 EV8_2 的 7 个关键事件

STM32 I2C 事件状态机深度解析&#xff1a;从硬件机制到实战调试1. I2C 状态机架构与核心事件概述STM32 的硬件 I2C 外设通过状态寄存器&#xff08;SR1/SR2&#xff09;和事件标志构建了一套完整的通信状态机。这套机制将复杂的时序逻辑转化为可编程控制的硬件自动化流程&…

作者头像 李华