当前位置: 首页 > 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;字符串下标访问对应着数字映射到对应的…...

AI编程助手DeepSeek Coder:代码生成效率提升指南

AI编程助手DeepSeek Coder&#xff1a;代码生成效率提升指南 【免费下载链接】DeepSeek-Coder DeepSeek Coder: Let the Code Write Itself 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Coder 在软件开发领域&#xff0c;开发者每天面临着重复编码、多语…...

智慧树网课助手:3步实现自动化学习,效率提升50%

智慧树网课助手&#xff1a;3步实现自动化学习&#xff0c;效率提升50% 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 在智慧树平台学习网课时&#xff0c;你是否经常…...

别再死记硬背了!用Verilog手写一个四位加减法器,帮你彻底搞懂补码和逻辑门

从逻辑门到补码运算&#xff1a;Verilog四位加减法器的硬件思维解密 记得第一次在《数字逻辑》课上听到"补码"这个概念时&#xff0c;我和大多数同学一样满脸困惑——为什么计算机要用这么绕的方式处理负数&#xff1f;直到亲手用Verilog实现了一个四位加减法器&…...

AI绘画新玩法:图图的嗨丝造相-Z-Image-Turbo部署实战,轻松生成高质量渔网袜图片

AI绘画新玩法&#xff1a;图图的嗨丝造相-Z-Image-Turbo部署实战&#xff0c;轻松生成高质量渔网袜图片 1. 引言&#xff1a;解锁AI绘画的专属风格 你是否曾经遇到过这样的困扰&#xff1f;想要生成特定风格的图片&#xff0c;比如穿着精致渔网袜的人物形象&#xff0c;但使用…...

AntimicroX:解放游戏体验的手柄映射工具,让每款游戏都支持手柄

AntimicroX&#xff1a;解放游戏体验的手柄映射工具&#xff0c;让每款游戏都支持手柄 【免费下载链接】antimicrox Graphical program used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support. 项目地址: https:…...

FireRedASR-AED-L本地化教程:国产统信UOS/麒麟系统全兼容部署方案

FireRedASR-AED-L本地化教程&#xff1a;国产统信UOS/麒麟系统全兼容部署方案 提示&#xff1a;本教程已在统信UOS 20、麒麟V10系统完成实测验证&#xff0c;同样适用于Ubuntu、CentOS等Linux发行版 1. 项目简介&#xff1a;为什么选择这个工具&#xff1f; 如果你正在寻找一个…...

ThinkPHP8 + Swoole6 实战:从宝塔面板到进程守护,手把手搭建稳定WebSocket服务

ThinkPHP8 Swoole6 生产级WebSocket服务部署指南 当实时通信成为现代应用的标配&#xff0c;如何将WebSocket服务稳定部署到生产环境就成了开发者必须掌握的技能。不同于本地开发环境&#xff0c;线上部署需要考虑服务器配置、进程守护、负载均衡等一系列复杂因素。本文将带你…...

Hashids终极指南:BCMath与GMP数学扩展性能深度对比

Hashids终极指南&#xff1a;BCMath与GMP数学扩展性能深度对比 【免费下载链接】hashids A small PHP library to generate YouTube-like ids from numbers. Use it when you dont want to expose your database ids to the user. 项目地址: https://gitcode.com/gh_mirrors/…...

Ostrakon-VL终端部署案例:单卡3090实现12路摄像头并发扫描

Ostrakon-VL终端部署案例&#xff1a;单卡3090实现12路摄像头并发扫描 1. 项目背景与核心价值 在零售与餐饮行业&#xff0c;传统的图像识别系统往往面临两个痛点&#xff1a;一是工业级UI操作复杂&#xff0c;员工培训成本高&#xff1b;二是多路摄像头并发处理需要昂贵的高…...

DeepSeekGEO生成式引擎优化技术方案

DeepSeekGEO生成式引擎优化技术方案技术支持&#xff1a;拓世网络技术开发工作室1 方案背景与技术范式转移随着生成式AI成为信息分发的主入口&#xff0c;用户获取信息的方式已从“搜索-点击”转变为“提问-答案”。据统计&#xff0c;超过60%的Z世代用户更倾向于通过AI助手获取…...