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.mzph.cn/news/129380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口自动化测试难点:数据库验证解决方案 百分之90人不知道

接口自动化中的数据库验证&#xff1a;确保数据的一致性和准确性 接口自动化测试是现代软件开发中不可或缺的一环&#xff0c;而数据库验证则是确保接口返回数据与数据库中的数据一致性的重要步骤。本文将介绍接口自动化中的数据库验证的原理、步骤以及示例代码&#xff0c;帮…

Flutter 06 动画

一、动画基本原理以及Flutter动画简介 1、动画原理&#xff1a; 在任何系统的Ul框架中&#xff0c;动画实现的原理都是相同的&#xff0c;即&#xff1a;在一段时间内&#xff0c;快速地多次改变Ul外观&#xff1b;由于人眼会产生视觉暂留&#xff0c;所以最终看到的就是一个…

CCS3列表和超链接样式

在默认状态下&#xff0c;超链接文本显示为蓝色、下画线效果&#xff0c;当鼠标指针移过超链接时显示为手形&#xff0c;访问过的超链接文本显示为紫色&#xff1b;而列表项目默认会缩进显示&#xff0c;并在左侧显示项目符号。在网页设计中&#xff0c;一般可以根据需要重新定…

切换win11 账户后,git报错

问题场景&#xff1a; 切换win11 账户后&#xff0c;git报错 git pull 报错&#xff1a; fatal: detected dubious ownership in repository at D:xxxxx D:/0xxxxxx is owned by: xxxxxxxxxxxxxxxxx but the current user is: xxxxxxxxxxxxxxxxxx To add an exception for this…

ESP-07S烧写固件记录

一&#xff0c;固件版本。 下面是官方默认AT指令版本&#xff0c;ESP-07S 的flash大小是4MB。 AT固件汇总 | 安信可科技 (ai-thinker.com) 二&#xff0c;烧录工具。 开发工具清单 | 安信可科技 (ai-thinker.com) 三&#xff0c;下载工具及连线。 使用USB转串口工具。 四&am…

Go的Defer简介

什么是延期&#xff1f; Defer 语句用于在存在 defer 语句的周围函数返回之前执行函数调用。该定义可能看起来很复杂&#xff0c;但通过示例就很容易理解。 例子 package mainimport ( "fmt" )func finished() { fmt.Println("Finished finding largest&qu…

后端使用DES加密,前端解密方法

前言&#xff1a; 现在为了防止用户直接篡改数据会采用加密的方式进行传输&#xff0c;加密的方法有很多种&#xff0c;这篇文章主要讲解下后端使用DES加密的数据传输给前端&#xff0c;前端接收到之后如何去解密。 操作步骤如下&#xff1a; 1.安装crypto-js npm install c…

基于单片机设计的太阳能跟踪器

一、前言 随着对可再生能源的需求不断增长&#xff0c;太阳能作为一种清洁、可持续的能源形式&#xff0c;受到越来越多的关注和应用。太阳能光板通常固定在一个固定的角度上&#xff0c;这限制了它们对太阳光的接收效率。为了充分利用太阳能资源&#xff0c;提高太阳能光板的…

SOA架构-架构真题(六十七)

SAAM主要输入的问题是问题描述、&#xff08;&#xff09;和架构描述文档。 问题建模问题说明需求建模需求说明 答案&#xff1a;D 解析&#xff1a; SAAM主要输入的问题是问题描述、需求说明和架构描述文档。 五、【问题&#xff1a;5.1】(7分)请说明什么是面向服务架构(S…

leetcode做题笔记211. 添加与搜索单词 - 数据结构设计

请你设计一个数据结构&#xff0c;支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。 实现词典类 WordDictionary &#xff1a; WordDictionary() 初始化词典对象void addWord(word) 将 word 添加到数据结构中&#xff0c;之后可以对它进行匹配bool search(wo…

Apache Pulsar 在腾讯云上的最佳实践

导语 由 StreamNative 主办的 Pulsar Meetup Beijing 2023 在2023年10月14日完美落幕&#xff0c;本次活动大咖云集&#xff0c;来自腾讯、滴滴、华为、智联招聘、RisingWave 和 StreamNative 的行业专家们一起&#xff0c;深入探讨 Pulsar 在生产环境中的最佳应用实践&#x…

NoSQL数据库使用场景以及架构介绍

文章目录 一. 什么是NoSQL&#xff1f;二. NoSQL分类三. NoSQL与关系数据库有什么区别四. NoSQL主要优势和缺点五. NoSQL体系框架 其它相关推荐&#xff1a; 系统架构之微服务架构 系统架构设计之微内核架构 鸿蒙操作系统架构 架构设计之大数据架构&#xff08;Lambda架构、Kap…

Python算法——快速排序

快速排序&#xff08;Quick Sort&#xff09;是一种高效的分治排序算法&#xff0c;它选择一个基准元素&#xff0c;将数组分成两个子数组&#xff0c;小于基准的放在左边&#xff0c;大于基准的放在右边&#xff0c;然后递归地排序子数组。快速排序通常比冒泡排序和选择排序更…

Android-Framework 默认屏蔽多任务按键,添加控制属性控制

一、环境 高通865 Android 10 二、代码修改 device/qcom/qssi/system.prop # Disable recent key persist.recentkey.disable11-屏蔽多任务按键 0-打开多任务按键 frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java -2770,7 2770,8 …

【C/C++】虚析构和纯虚析构

纯虚析构的问题 多态使用时&#xff0c;如果子类中有属性开辟到堆区&#xff0c;那么父类指针在释放时无法调用到子类的析构代码。 解决方式&#xff1a;将父类中的析构函数改为虚析构或者纯虚析构 虚析构和纯虚析构共性&#xff1a; 可以解决父类指针释放子类对象都需要有…

【C语言_线程pthread_互斥锁mutex_条件触发cond 之解析与示例 (开源)】.md updata:23/11/03

文章目录 线程 pthread线程 vs 进程线程退出 等待 消息传递join:等待&#xff0c;传参void*&#xff1b; exit:退出&#xff0c;对参数赋值void**; 互斥锁 mutex互斥锁mutex条件cond_等待wait、触发signal 控制线程执行 补充: 宏-静态初始化 互斥锁/条件 线程 pthread 线程 vs…

轧钢厂安全生产方案:AI视频识别安全风险智能监管平台的设计

一、背景与需求 轧钢厂一般都使用打包机对线材进行打包作业&#xff0c;由于生产需要&#xff0c;人员需频繁进入打包机内作业&#xff0c;如&#xff1a;加护垫、整包、打包机检修、调试等作业。在轧钢厂生产过程中&#xff0c;每个班次生产线材超过300件&#xff0c;人员在一…

2023下半年软考高项答题技巧!

2023下半年软考倒计时最后一天&#xff0c;一些软考高项答题技巧分享&#xff01; 高项答题技巧 1、综合知识 &#xff08;1&#xff09;首先是分析试题的技巧 –先看清楚问题&#xff0c;再看选项&#xff1b; –判断题目到底考察的是什么知识点&#xff0c;排除干扰项。…

Java 反射与注解

1. Class 类 1.1 Class 对象 在 Java 中&#xff0c;每个已加载的类在内存中都有一份类信息&#xff0c;类信息对应的类是 java.lang.Class&#xff0c;每个对象都持有指向它所属类信息的引用。想要获取 Class 对象&#xff0c;有以下三种方法&#xff1a; 1. 通过类名获取&…

docker打包container成image,然后将image上传到docker hub

第一步&#xff1a;停止正在运行的容器 docker stop <container_name> eg: docker stop xuanjie_mlir 第二步&#xff1a;将对应的container打包成image docker commit <container_id> <镜像名&#xff1a;版本> eg&#xff1a;docker commit 005672e6d97a…