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

力扣-76.最小覆盖子串

题目链接

76.最小覆盖子串

class Solution {public String minWindow(String s, String t) {// 统计目标字符串t中各字符的出现次数HashMap<Character, Integer> target = new HashMap<>();for (int i = 0; i < t.length(); i++) {target.put(t.charAt(i), target.getOrDefault(t.charAt(i), 0) + 1);}int left = 0;int right = 0;int len = Integer.MAX_VALUE;int valid = 0;  // 已匹配的有效字符数int start = 0;  // 最小窗口的起始位置,方便返回结果时直接取子串while (right < s.length()) {// 右指针不断右移扩展窗口char r = s.charAt(right);if (target.containsKey(r)) {target.put(r, target.get(r) - 1);if (target.get(r) >= 0) {valid++;}}// 当所有字符都匹配时,尝试左移左指针以缩小窗口while (valid == t.length()) {// 注意更新时机if (right - left + 1 < len) {len = right - left + 1;start = left;}char l = s.charAt(left);if (target.containsKey(l)) {target.put(l, target.get(l) + 1);if (target.get(l) > 0) {valid--;}}left++;}right++;}return len == Integer.MAX_VALUE ? "" : s.substring(start, start + len);}
}

小结:主要分为以下几个步骤:

  1. 初始化阶段:
  • 使用HashMap统计目标字符串t中每个字符的出现频率
  • 初始化滑动窗口的左右指针、最小窗口长度等变量
  1. 滑动窗口主循环:
  • 右指针不断右移扩展窗口
  • 每当遇到t中的字符时,减少其需求计数
  • valid等于t长度时,表示当前窗口包含所有所需字符
  1. 窗口收缩阶段:
  • 尝试左移左指针以缩小窗口
  • 只有当窗口变小且仍满足条件时才更新最小窗口记录
  • 移除左边界的字符时,恢复其需求计数
  1. 结果处理:
  • 如果没有找到符合条件的窗口,返回空字符串
  • 否则返回从start开始、长度为len的子串
http://www.dtcms.com/a/300543.html

相关文章:

  • 安卓怎么做一个像QQ一样的开关切换控件
  • Kotlin位运算
  • EMCCD相机与电可调变焦透镜的同步控制系统设计与实现
  • Kotlin递归
  • MYSQL:索引
  • golang设置http代理
  • Flink2.0学习笔记:Stream API 常用转换算子
  • maven <dependencyManagement>标签的作用
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的人格品牌化实现路径研究
  • 常用git命令集锦
  • conda和pip安装包时的注意细节,以及下载慢时如何配置镜像地址
  • 积分兑换小程序Java
  • Megatron 中的 TensorParallel, PipelineParallel, ContextParallel,ExpertParallel
  • PHP框架之Laravel框架教程:3. 数据库操作(简要)
  • PowerDesigner 画ER图并生成sql 教程
  • 【学习笔记】MimicGen: 基于人类演示的可扩展机器人学习数据生成系统
  • GIt学习——分布式版本控制工具
  • STL——list
  • 金融科技中的虚拟助手
  • 15.7 DeepSpeed实战:单卡38GB到多卡12GB,3倍效率提升的ZeRO-3配置全解
  • 【专题十五】BFS 解决 FloodFill
  • 多智能体系统设计:协作、竞争与涌现行为
  • 2025年7月25日-7月26日 · AI 今日头条
  • 【第六节】方法与事件处理器
  • 【计算机网络架构】网状型架构简介
  • C++ 多线程(一)
  • 详解力扣高频SQL50题之610. 判断三角形【简单】
  • Vscode的常用快捷键(摆脱鼠标计划)
  • [N1盒子] 斐讯盒子N1 T1通用刷机包(可救砖)
  • 金字塔降低采样