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

Leetcode76最小覆盖子串

思路:滑动窗口思想

1. 滑动窗口是什么:用一个滑动窗口为覆盖目标子串的字符串

2.怎么移动窗口:当不满足覆盖时右指针移动扩大范围,当覆盖了就移动左指针缩减范围直到再次不覆盖

3. 怎么判断是否覆盖:这里使用两个哈希表,一个保存目标子串字符数,一个保存窗口内的字符数,注意是窗口内的,因为需要用窗口的和目标子串进行比较来控制移动

4. 怎么控制循环:外层循环while(right<len) right++,内层循环符合覆盖且left<right

class Solution {Map<Character,Integer> map = new HashMap<Character,Integer>();Map<Character,Integer> target = new HashMap<Character,Integer>();public String minWindow(String s, String t) {if(s.length() == 1 && s.equals(t)){return s;}int left = 0;//初始化为-1int right = -1;char[] str = s.toCharArray();char[] tc = t.toCharArray();//两个map,一个保存目标串,一个保存窗口值String res = "";for(int i = 0;i<tc.length;i++){target.put(tc[i],target.getOrDefault(tc[i],0)+1);}int min = str.length;while(right<str.length){right++;if(right<str.length)map.put(str[right],map.getOrDefault(str[right],0)+1);while(isMatch()&&left<=right){if(min>=right-left+1){res = s.substring(left,right+1);min = right - left + 1;}map.put(str[left],map.getOrDefault(str[left],0)-1);left++;}}return res;}public boolean isMatch(){Set entry = target.entrySet();for(Object e : entry){Map.Entry o = (Map.Entry) e;Integer val = (Integer)o.getValue();Character key = (Character)o.getKey();if(map.getOrDefault(key,0)<val){return false;}}return true;}
}

http://www.lryc.cn/news/217539.html

相关文章:

  • GD32 单片机 硬件I2C死锁解决方法
  • SPSS两相关样本检验
  • 【vscode远程开发】使用内网穿透实现在公网环境下远程访问
  • KaiwuDB 内核解析 - SQL 查询的生命周期
  • 2023.11.03 homework
  • ssm在线互助答疑系统-计算机毕设 附源码 20862
  • MySQL中如何书写update避免锁表
  • Mysql库操作
  • C#中LINQtoSQL只能在.NetFramework下使用,不能在.net 下使用
  • Nacos 的底层实现原理 注册中心的两种调用方式
  • 视频编码格式和文件格式(多媒体容器格式)的关系
  • RHCSA --- 第二天
  • 作为一个初学者,入门大模型其实没那么难
  • 【QT】基本的绘图操作和高级绘图
  • layer.open再次渲染html,子页面调用在父页面打开弹出层,渲染html
  • 【Apache Flink】Flink DataStream API的基本使用
  • 民安:专业在线教育平台客户满意度调查的引领者
  • 浅谈新能源汽车充电桩的选型与安装
  • FFmpeg系列索引
  • AWS组件使用
  • DALLE 3技术分析 - 训练方式/模型结构
  • Go的自定义错误
  • SpringBoot集成Dubbo
  • 利用shp文件构建mask【MATLAB和ARCGIS】两种方法
  • Luminar Neo Mac/Windows中文版:引领AI图像编辑的革命性时代
  • 远程设备常用工具:向日葵、Todesk
  • JAVA七种常见排序算法
  • 高质量绝世玄幻小说,情节引人入胜,一读成痴的绝佳选择
  • Flask三种添加路由的方法
  • 基于layui的select选择框修改为多选框