【数组】- 最小覆盖子串

server/2025/1/16 13:32:25/

1. 对应力扣题目连接

  • 最小覆盖子串

2. 实现案例代码

public class MinimumCoveringSubstring {public static void main(String[] args) {System.out.println(minWindow("ADOBECODEBANC", "ABC")); // 输出:"BANC"System.out.println(minWindow("a", "a")); // 输出:"a"System.out.println(minWindow("a", "aa")); // 输出:""System.out.println(minWindow("AAABBB", "AB")); // 输出:"AB"System.out.println(minWindow("ADOBECODEBANC", "XYZ")); // 输出:""System.out.println(minWindow("ABCDABCD", "BCD")); // 输出:"BCD"System.out.println(minWindow("ABCD", "AB")); // 输出:"AB"System.out.println(minWindow("XYZABC", "ABC")); // 输出:"ABC"System.out.println(minWindow("AXBYCZ", "ABC")); // 输出:"AXBYC"System.out.println(minWindow("AAABBBCCC", "ABC")); // 输出:"ABBBC"}public static String minWindow(String s, String t) {if (s.length() == 0 || t.length() == 0) {return "";}// 记录t中字符的需求Map<Character, Integer> need = new HashMap<>();for (char c : t.toCharArray()) {need.put(c, need.getOrDefault(c, 0) + 1);}// 记录窗口中字符的数量Map<Character, Integer> window = new HashMap<>();int left = 0, right = 0;int valid = 0;int start = 0, minLength = Integer.MAX_VALUE;while (right < s.length()) {char c = s.charAt(right);right++;// 窗口内数据更新if (need.containsKey(c)) {window.put(c, window.getOrDefault(c, 0) + 1);if (window.get(c).intValue() == need.get(c).intValue()) {valid++;}}// 判断左侧窗口是否要收缩while (valid == need.size()) {// 更新最小覆盖子串if (right - left < minLength) {start = left;minLength = right - left;}char d = s.charAt(left);left++;// 窗口内数据更新if (need.containsKey(d)) {if (window.get(d).intValue() == need.get(d).intValue()) {valid--;}window.put(d, window.get(d) - 1);}}}return minLength == Integer.MAX_VALUE ? "" : s.substring(start, start + minLength);}
}

http://www.ppmy.cn/server/53207.html

相关文章

EAK高压电阻器-引线高压电阻器-厚膜高压电阻器

描述 EAK高压电阻器是扁平高压电阻器&#xff0c;完全满足低感、稳定和精密无源元件的所有要求。 扁平高压电阻器最适合作为组装在 PCB 上的有线元件&#xff0c;但也可以用作 SMD 元件。 我们提供 HVR、HPR、HVI、HVD 和 HVS 系列的扁平高压电阻器&#xff0c;这些电阻器具…

SpringBoot脚手架MySpringBootAPI(PgSQL+Druid+MyBatisPlus+Lombok)

MySpringBootAPI SpringBoot脚手架&#xff0c;基于SpringBootDruidPgSQLMyBatisPlusFastJSONLombok&#xff0c;其他的请自行添加和配置。 Author powered by Moshow郑锴(大狼狗) , https://zhengkai.blog.csdn.net 如何运行 1.首先确保你是JDK17&#xff0c;推荐微软的MSJDK…

web前端之文档流、浮动、定位详解

目录 一、文档流 二、浮动 1.添加浮动 2.清除浮动 三、定位 1.相对定位 2.绝对定位 一、文档流 什么是文档流&#xff1f; ● 文档流指的是文档中的标签在排列时所占用的位置。 将窗体自上而下分成一行行 &#xff0c;并在每 行中按从左至右的顺序排放标签&#xff0c…

Vite: Esbuild的使用与其插件开发

概述 作为 Vite 的双引擎之一&#xff0c;Esbuild 在很多关键的构建阶段(如 依赖预编译 、 TS 语法转译 、 代码压缩 ) 让 Vite 获得了相当优异的性能&#xff0c;是 Vite 高性能的得力助手无论是在 Vite 的配置项还是源码实现中&#xff0c;都包含了不少 Esbuild 本身的基本概…

MySQL备份和恢复

备份的目的是灾难恢复&#xff0c;此外还可以测试应用、回滚数据修改、查询历史数据、审计等。通常造成数据丢失的情况有如下几种&#xff1a; 程序错误人为操作错误运算错误磁盘故障天灾 一、MySQL数据库备份概述 1.1 数据库的备份类型 1.1.1 从物理和逻辑的角度分类 可以分…

JVM 相关知识整理

文章目录 前言JVM 相关知识整理1. 新生代和老年代2. 对象的分配过程3. Full GC /Major GC 触发条件4. 逃逸分析4.1.示例4.2. 使用逃逸分析&#xff0c;编译器可以对代码做如下优化 5. 对象的内存分配6. Minor GC 与 Major GC/Full GC的比较:7. 什么对象进入老年代7.1. 大对象直…

MQTT遗嘱信息(2)

接前一篇文章&#xff1a;MQTT遗嘱信息&#xff08;1&#xff09; 本文内容参考&#xff1a; 什么是MQTT遗嘱消息&#xff1f;如何配置和处理遗嘱消息&#xff1f;_mqtt last will-CSDN博客 MQTT 协议学习&#xff1a;Retained&#xff08;保留消息&#xff09; 与 LWT&#x…

华为仓颉编程语言观感

这里写自定义目录标题 相似点&#xff08;主要与Swift进行对比&#xff09;不同点亮点 花了半天时间&#xff0c;对华为新出的仓颉编程语言做了简单的了解&#xff0c;整体观感如下&#xff1a; 仓颉语言看起来是一门大而全的语言&#xff0c;吸纳了现存的很多中编程语言的范式…