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

【力扣hot100】滑动窗口-最小覆盖子串

题目描述

给定两个字符串 s 和 t,长度分别是 m 和 n,返回 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 的子串中,
因此没有符合条件的子字符串,返回空字符串。

代码实现

func minWindow(s string, t string) string {if len(s) == 0 || len(t) == 0 || len(s) < len(t) {return ""}need := make(map[byte]int)window := make(map[byte]int)for _, ch := range t {need[ch]++}left, right := 0, 0minLen := len(s) + 1start := 0valid := 0for right < len(s) {//扩张边界c := s[right]right++//更新窗口if c, ok := need[c];ok {window[c]++if window[c] == need[c] {valid++}}//如果valid == len(need) 尝试收缩左边界for valid == len(need) {if right - left < minLen {start = leftminLen = right - left}//收缩左边界d := s[left]left++//计数--if _, ok := need[d]; ok {if window[d] == need[d] {valid--}window[d]--}}}if minLen == len(s) + 1 {return ""}return s[start: start + minLen]
}
http://www.jsqmd.com/news/673458/

相关文章:

  • YOLOv5至YOLOv12升级:商品识别系统的设计与实现(完整代码+界面+数据集项目)
  • 学网络安全别选错!这三大关联专业职业路径天差地别,2026届毕业生速看
  • 如何在iOS 15-16.6上实现iCloud激活锁绕过:applera1n完整指南
  • 如何解决共享引用与循环引用难题?Apache Fury的终极解决方案
  • 用Simulink手把手搭建7自由度悬架模型:从方程到仿真的保姆级避坑指南
  • 从manifest.json到openSetting:手把手调试uni-app小程序位置权限的全流程(附真机调试技巧)
  • 终极网盘直链下载工具:2025年免费实现全速下载的完整指南
  • TMS320F28377D双核DSP实战:从单核到双核,手把手教你配置CCS7.40工程(附源码)
  • 别再混淆了!一文搞懂OpenHarmony NAPI中的同步、回调与Promise接口(附代码对比)
  • k8s下部署consul and etcd
  • mini3d三角形光栅化算法:从顶点到像素的完整转换过程
  • 从零开始掌握哔哩下载姬:你的B站视频下载与管理终极指南
  • EPLAN高手都在用的‘拖拽大法’:一个手势搞定符号库、项目打开和文件导入
  • 5步搞定明日方舟全自动化:MAA助手终极指南
  • 如何在Orwell Dev-C++中配置GCC
  • 别再只写#ifdef __cplusplus了!聊聊这个宏在C++11/17/20下的实战用法与坑
  • 在Ubuntu 20.04上搞定lidar_imu_calib编译报错:一个C++14编译选项的避坑实录
  • 模块化3D高斯喷洒框架:GauStudio架构深度解析与技术创新
  • 金三银四创作之星最后10天怎么冲?普通技术博主的参赛选题、发文节奏与提分实战方案
  • ITK-SNAP医学图像分割:从新手到专家的实战指南
  • CDecrypt:终极Wii U游戏文件解密工具完整指南
  • JMeter 线程组
  • Magpie:为Windows用户重新定义窗口缩放体验的开源解决方案
  • Serverless Components开发工作流:从本地调试到Registry发布全流程
  • Fedora 40 一键安装 Oracle 19C 单机
  • OpenCVE数据源集成揭秘:MITRE、NVD、RedHat等多源数据聚合
  • 如何使用League Akari:英雄联盟智能管家的完整指南
  • SCons完整指南:从简单程序到复杂项目的构建自动化
  • Go 结构体
  • Windows递归创建目录命令(递归创建目录脚本)mkdir