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

力扣labuladong一刷day9滑动窗口共4题

力扣labuladong一刷day9滑动窗口共4题

文章目录

      • 力扣labuladong一刷day9滑动窗口共4题
      • 一、76. 最小覆盖子串
      • 二、567. 字符串的排列
      • 三、438. 找到字符串中所有字母异位词
      • 四、3. 无重复字符的最长子串

一、76. 最小覆盖子串

题目链接:https://leetcode.cn/problems/minimum-window-substring/
思路:典型的滑动窗口题目,使用一个map记录所必须的字符个数,使用另外一个map去记录滑动窗口内部的need字符,一旦need所需的个数都满足以后,就开始缩小滑动窗口,在缩小滑动窗口的过程中不断记录最小的窗口长度以及窗口的起始点,并且在map不满足need时结束缩小窗口,继续扩大窗口。

class Solution {public String minWindow(String s, String t) {Map<Character, Integer> need = new HashMap<>();Map<Character, Integer> window = new HashMap<>();int left = 0, right = 0, valid = 0;int start = 0, max = Integer.MAX_VALUE;for (char c : t.toCharArray()) {need.put(c, need.getOrDefault(c, 0)+1);}while (right < s.length()) {char c = s.charAt(right);right++;if (need.containsKey(c)) {window.put(c, window.getOrDefault(c, 0)+1);if (window.get(c).equals(need.get(c))) {valid++;}}while (valid == need.size()) {if (right - left < max) {start = left;max = right-start;}char cl = s.charAt(left);left++;if (need.containsKey(cl)) {if (window.get(cl).equals(need.get(cl))) valid--;window.put(cl, window.get(cl)-1);}}}return max == Integer.MAX_VALUE ? "" : s.substring(start, start+max);}
}

二、567. 字符串的排列

题目链接:https://leetcode.cn/problems/permutation-in-string/
思路:本题要求s1是s2子串的排列,那就是要求s1与s2的子串长度要相等,那就是我们只需要控制滑动窗口的长度等于子串长度即可,长度相等时只要s1中的字符都出现了即可返回,然后就是正常缩小窗口,再扩大窗口。

class Solution {public boolean checkInclusion(String s1, String s2) {Map<Character, Integer> need = new HashMap<>();Map<Character, Integer> window = new HashMap<>();int left = 0, right = 0, valid = 0;for (char c : s1.toCharArray()) {need.put(c, need.getOrDefault(c, 0) + 1);}while (right < s2.length()) {char c = s2.charAt(right);right++;if (need.containsKey(c)) {window.put(c, window.getOrDefault(c, 0)+1);if (window.get(c).equals(need.get(c))) valid++;}while (right - left == s1.length()) {if (valid == need.size()) {return true;}char cl = s2.charAt(left);left++;if (need.containsKey(cl)) {if (window.get(cl).equals(need.get(cl))) valid--;window.put(cl, window.get(cl)-1);}}}return false;}
}

三、438. 找到字符串中所有字母异位词

题目链接:https://leetcode.cn/problems/find-all-anagrams-in-a-string/
思路:和上一题基本差不多,也是要求p与s的子串长度相等,我们只需要控制窗口等于p的长度即可,然后在其中判断。

class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> list = new ArrayList<>();Map<Character, Integer> need = new HashMap<>();Map<Character, Integer> window = new HashMap<>();int left = 0, right = 0, valid = 0;for (char c : p.toCharArray()) {need.put(c, need.getOrDefault(c, 0)+1);}while (right < s.length()) {char cr = s.charAt(right);right++;if (need.containsKey(cr)) {window.put(cr, window.getOrDefault(cr, 0)+1);if (window.get(cr).equals(need.get(cr))) valid++;}if (right - left == p.length()) {if (valid == need.size()) {list.add(left);}char cl = s.charAt(left);left++;if (need.containsKey(cl)) {if (window.get(cl).equals(need.get(cl))) valid--;window.put(cl, window.get(cl)-1);}}}return list;}
}

四、3. 无重复字符的最长子串

题目链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/
思路:求无重复字符串的最长子串,只需要用map收集字符即可,只要当前字符个数大于1即可开始缩小滑动窗口,直到当前字符的个数不再大于1.
最大长度max的记录放在最后。

class Solution {public int lengthOfLongestSubstring(String s) {Map<Character, Integer> map = new HashMap<>();int left = 0, right = 0, max = 0;while (right < s.length()) {char c = s.charAt(right);right++;map.put(c, map.getOrDefault(c, 0)+1);while (map.get(c) > 1) {char cl = s.charAt(left);left++;map.put(cl, map.get(cl)-1);}max = Math.max(max, right - left);}return max;}
}

相关文章:

力扣labuladong一刷day9滑动窗口共4题

力扣labuladong一刷day9滑动窗口共4题 文章目录 力扣labuladong一刷day9滑动窗口共4题一、76. 最小覆盖子串二、567. 字符串的排列三、438. 找到字符串中所有字母异位词四、3. 无重复字符的最长子串 一、76. 最小覆盖子串 题目链接&#xff1a;https://leetcode.cn/problems/m…...

ubuntu开机系统出错且无法恢复。请联系系统管理员。

背景&#xff1a; ubuntu22.04.2命令行&#xff0c;执行自动安装系统推荐显卡驱动命令&#xff0c;字体变大&#xff0c;重启后出现如下图错误&#xff0c;无法进入系统&#xff0c;无法通过CTRLALTF1-F3进入TTY模式。 解决办法&#xff1a; 1.首先要想办法进入系统&#xff…...

Transformer详解一:transformer的由来和先导知识

目录 参考资料前言一、预训练二、神经网络语言模型&#xff08;NNLM&#xff09;&#xff1a;预测下一个词one-hot编码的缺陷词向量&#xff08;word embedding&#xff09; 三、Word2Vec模型&#xff1a;得到词向量CBOWSkip-gramWord2Vec和NNLM的区别Word2Vec的缺陷 四、ELMO模…...

数字化产品经理的金字塔能力模型

在企业数字化转型的浪潮下&#xff0c;要求IT团队更加主动的服务业务、赋能业务&#xff0c;而数字化产品经理正是IT、业务融合的桥梁&#xff0c;该岗位需要具备业务、技术、商业的复合知识结构&#xff0c;并且拥有很强的自驱力。那么数字化产品经理在企业如何产生价值、赋能…...

这 11 个 for 循环优化你得会

日常开发中&#xff0c;经常会遇到一些循环耗时计算的操作&#xff0c;一般也都会采用 for 循环来处理&#xff0c;for 作为编程入门基础&#xff0c;主要是处理重复的计算操作&#xff0c;虽然简单好用&#xff0c;但在写法上也有很多的考究&#xff0c;如果处理不好&#xff…...

JVM字符串常量池StringTable

目录 一、StringTable为什么要调整 二、String的基本特性 三、String的内存分配 四、字符串拼接操作 五、intern()方法 六、Stringtable的垃圾回收 七、G1中String去重操作 一、StringTable为什么要调整 jdk7之前&#xff0c;hotspot对于方法区的实现是永久代&#xff…...

【华为OD题库-010】寻找矿堆的最大价值-Java

题目 给你一个由0(空地)、1(银矿)、2(金矿)组成的的地图&#xff0c;矿堆只能由上下左右相邻的金矿或银矿连接形成。超出地图范围可以认为是空地。 假设银矿价值1&#xff0c;金矿价值2&#xff0c;请你找出地图中最大价值的矿堆并输出该矿堆的价值 输入描述 地图元素信息如: 2…...

在PyTorch中使用CUDA, pytorch与cuda不同版本对应安装指南,查看CUDA版本,安装对应版本pytorch

目录 1 查看本机CUDA版本 2 查看对应CUDA的对应pytorch版本安装 3 用pip 安装 4 用conda安装 5 验证安装 在PyTorch中使用CUDA&#xff0c;根据你的具体环境和需求调整版本号&#xff0c;确保安装的PyTorch版本与你的CUDA版本兼容。 在PyTorch中使用CUDA&#xff0c;你需…...

copilot 产生 python工具函数并生成单元测试

stock.py 这个文件&#xff0c;我只写了注释&#xff08;的开头&#xff09;&#xff0c;大部分注释内容和函数都是copilot # split a string and extract the environment variable from it # input can be , pathabc, pathabc;pathdef, pathabc;pathdef;pathghi # output i…...

缓存与数据库双写一致性几种策略分析

一、背景 在高并发场景中&#xff0c;为防止大量请求直接访问数据库&#xff0c;缓解数据库压力&#xff0c;常用的方式一般会增加缓存层起到缓冲作用&#xff0c;减少数据库压力。引入缓存&#xff0c;就会涉及到缓存与数据库中数据如何保持一致性问题&#xff0c;本文将对几…...

Spring全家桶源码解析--2.6 Spring scope 限制bean的作用范围

文章目录 前言一、Scope是什么&#xff1f;二、Scope使用2.1 单例&#xff1a;2.1.1 单例Bean的特点如下&#xff1a;2.1.2 单例设计模式 与单例bean&#xff1a; 2.2 原型bean&#xff1a;2.2.1 原型Bean的特点&#xff1a;2.2.2 原型Bean的销毁&#xff1a; 2.3 Request bean…...

python 文本纠错库pycorrector的使用(API变更,许多介绍文章已不可用)

pycorrector是一个nice的中文检测库&#xff0c;在最新的版本API变更&#xff0c;导致许多之前的介绍文章不可用。 现将新API粘贴如下。...

【C++初阶(七)】类和对象(下)

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…...

Linux上C++通过LDAP协议使用kerberos认证AES加密连接到AD服务器

一.前言 记录自己在实现这个流程遇到的各种问题&#xff0c;因为我也是看了许多优质的文章以及组内大佬的帮助下才弄成的&#xff0c;这里推荐一个大佬的文章&#xff0c;写的非常优秀&#xff0c;比我这篇文章写得好得很多&#xff0c;最后我也是看这个大佬的代码最终才实现的…...

开源供应链管理系统 多供应商批发管理系统方案及源码输出

开发框架&#xff1a;PHPMySQL 后端框架&#xff1a;ThinkPHP 订货端&#xff1a;PC小程序 客户订货端&#xff1a;小程序 多仓库OR多供应商&#xff1a;多供应商 是否进销存&#xff1a;自带进销存 整个方案含B端订货PC、小程序端、C端小程序端下单&#xff0c;源码&…...

2yocto 自启动程序(服务)

yocto 自动运行主程序 文章目录 yocto 自动运行主程序1 问题现象2 问题分析:1)是否执行2)查看服务状态11)自动22)手动3)rc.local服务3 解决之道创建自定义服务自定义服务运行设置关系服务参考1 问题现象 系统启动后,自定义的主程序没有随着启动的起动,自动运行起来(界…...

AI 绘画 | Stable Diffusion 进阶 Embeddings(词嵌入)、LoRa(低秩适应模型)、Hypernetwork(超网络)

前言 Stable Diffusion web ui&#xff0c;除了依靠文生图&#xff08;即靠提示词生成图片&#xff09;&#xff0c;图生图&#xff08;即靠图片提示词生成图片&#xff09;外&#xff0c;这两种方式还不能满足我们所有的绘图需求&#xff0c;于是就有了 Embeddings&#xff0…...

【汇编】计算机的组成

文章目录 前言一、计算机的基本组成1.1 中央处理器&#xff08;CPU&#xff09;1.2 内存指令和数据存储的位置计算机中的存储单元计算机中的总线地址总线数据总线控制总线 1.3 输入设备和输出设备1.4 存储设备 二、计算机工作原理三、计算机的层次结构总结 前言 计算机是现代社…...

asp.net学生宿舍管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 学生宿舍管理系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net学生宿舍管理系统1 应用技…...

[C++]Leetcode17电话号码的字母组合

题目描述 解题思路&#xff1a; 这是一个深度优先遍历的题目&#xff0c;涉及到多路递归&#xff0c;下面通过画图和解析来分析这道题。 首先说到的是映射关系&#xff0c;那么我们就可以通过一个字符串数组来表示映射关系&#xff08;字符串下标访问对应着数字映射到对应的…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...