当前位置: 首页 > 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://www.xdnf.cn/news/996913.html

相关文章:

  • ROS2双目相机标定与测距全流程详解:从原理到实践
  • 聊一聊 Linux 上对函数进行 hook 的两种方式
  • Go 语言:高并发编程的性能突围之路
  • Transformer、RNN (循环神经网络) 和 CNN (卷积神经网络)的区别
  • @RequestBody和@ResponseBody注解的作用是什么
  • MySQL 分区
  • mysql_mcp_server quickstart
  • RDMA技术详解:下一代高性能网络通信的核心
  • QT5中的QGraphics图形视图框架学习笔记(Item、Scene和View)
  • WebDebugX和多工具组合的移动端调试流程构建:一个混合App项目的实践案例
  • TDengine 基础功能——数据写入
  • springboot后端与鸿蒙的结合
  • 【深尚想】华大北斗TAU1114-1216BB0高精度/GNSS定位模组!车载/物联网专用 电子元器件解析
  • oracle 23ai对象注释新特性ANNOTATIONS
  • 低代码二次开发指南:基于HENGSHI SENSE的自动化报表生成教程
  • Android 11开机流程记录
  • gffread
  • 疏锦行Python打卡 DAY 27 函数专题2:装饰器
  • Java 大视界——Java大数据在智能安防视频监控中的异常事件快速响应与处理机制
  • Xsens动捕和Manus数据手套在元宇宙数字人制作中提供解决方案
  • vba学习系列(11)--批退率通过率等数据分析
  • 浅谈MapReduce--基本操作
  • 2025年渗透测试面试题总结-长亭科技[校招]安全服务工程师(题目+回答)
  • 大模型布署如何选择GPU资源?
  • JAVA:RabbitMQ 消息持久化机制的技术指南
  • jenkins流水线打包vue无权限
  • web3 资讯网址
  • 《C++ 多态》
  • 基于llamafactory微调千问大模型(实战)
  • 延时神经网络 vs CNN vs RNN:时空建模的三种武器对比