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

【滑动窗口】438. 找到字符串中所有字母异位词

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

滑动窗口解法

  • 创建两个Map 一个记录实际需要的有效字符 另一个记录窗口内的有效字符个数
  • 初始化need
  • 每次遍历一个字符 判断是不是有效字符 如果是 更新window 另外判断window中有效字符的个数是不是等于need中有效字符的个数 如果是更新valid
  • 当窗口长度过大 需要缩小边界 判断左边窗口的字符 如果是有效字符 更新window和valid
class Solution {public List<Integer> findAnagrams(String s, String p) {Map<Character,Integer> need = new HashMap<>();// 记录P中每一个字符Map<Character,Integer> window = new HashMap<>();// 记录窗口内部的所有有效字符// 初始化for(int i  = 0; i < p.length(); i++){char c = p.charAt(i);need.put(c,need.getOrDefault(c,0) + 1);}int left = 0;int right = 0;int valid = 0;// 记录窗口内有效字符是否已经达到要求List<Integer> res = new ArrayList<>();while(right < s.length()){char c = s.charAt(right);right++;// 进行窗口内数据的一系列更新// 计算当前有效字符的满足个数if(need.containsKey(c)){window.put(c,window.getOrDefault(c,0) + 1);// 记录有效字符// 判断窗口内的有效字符和 need中的有效字符个数是不是相等  因为很可能不相等// 如果是 直接valid++ 代表有一个字符的个数已经满足了if(window.get(c).equals(need.get(c))){valid++;}}// 判断左边的窗口是不是要收缩while(right - left >= p.length()){if(valid == need.size()){// 说明找到一个字母异位词  记录一下起始边界res.add(left);}// 取出左边窗口边界的字符  进行更新操作  更新validchar d = s.charAt(left);// 窗口缩小left++;// 进行窗口内数据的一系列更新if(need.containsKey(d)){// 将窗口内满足条件的有效字符减一 if(window.get(d).equals(need.get(d))){valid--;}window.put(d,window.get(d) - 1);// 重新写入window窗口}}}return res;}}

相关文章:

【滑动窗口】438. 找到字符串中所有字母异位词

438. 找到字符串中所有字母异位词 滑动窗口解法 创建两个Map 一个记录实际需要的有效字符 另一个记录窗口内的有效字符个数初始化need每次遍历一个字符 判断是不是有效字符 如果是 更新window 另外判断window中有效字符的个数是不是等于need中有效字符的个数 如果是更新valid…...

【PowerQuery】Excel 一分钟以内刷新PowerQuery数据

当需要进行刷新的周期如果小于一分钟,采用数据自动刷新就无法实现自动刷新的目标。那就没有办法了吗?当然不是,这里就是使用VBA来实现自动刷新。这里实现VBA刷新的第一步就是将当前的Excel 保存为带有宏的Excel 文件,如果不带宏则无法运行带有宏代码的Excel文件,保存过程如…...

【C语言】用冒泡排序实现my_qsort

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解如何用冒泡排序实现my_qsort&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 前言二. 冒泡排序三. 4个参数3.1 第一个参数void* base3.2 第二个参数…...

【css】深入理解flex属性

参考文章&#xff1a; 深入理解Flex属性 flex弹性布局教程-05-项目属性flex-shrink flex&#xff1a;flex-grow flex-shrink flex-basis flex&#xff1a;0 1 0 如何计算flex布局&#xff0c;有flex-shrink和flex-grow的情况下&#xff0c;每个元素的大小 flex-grow生效公式如…...

前端项目开发流程

一 参加需求对称(评审)会议 时间&#xff1a;在产品设计完成以后&#xff0c;进入正式的开发流程之前 组织者&#xff1a;产品&项目经理 目的&#xff1a;统一大家对产品的认识&#xff0c;及时发现产品设计缺陷&#xff0c;尽可能降低后续修改需求的频率 参与者&#xff…...

MybatisPlus逆向工程入门指南:让你的开发更高效、更简洁、更优雅

学会了&#xff0c;可以看看这篇文章&#xff1a;更新中~ 正向工程&#xff1a;先创建Java实体类&#xff0c;由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。 逆向工程&#xff1a;先创建数据库表&#xff0c;由框架负责根据数据库表&#xff0c;反向生成如下…...

通用商城项目(下)

记录一些踩坑的地方&#xff0c;以及理顺一些思路。 通过管理系统页面&#xff0c;完成商品属性分组和商品属性&#xff08;基本属性&#xff09;关联维护 属性表 与 属性组表 的功能完善&#xff1a;显示属性组与属性表的一对多关系 前端 1. 引入组件&#xff0c;是否显示使…...

k8s集群使用ingress转发grafana服务

文章目录 前言一、思路二、grafana准备1. grafana-configmap.yaml2. grafana.yaml 三、ingress准备1. ingress.yaml2. grafana-externalname.yaml3. ingress-nginx-controller 四、 本机host文件准备五、访问测试 前言 在k8s集群中&#xff0c;使用ingress服务转发grafana的页…...

MongoDB的备份和恢复

工具 mongodump 和 mongorestore是MongoDB自带的备份恢复工具。 参考文章 ## https://blog.csdn.net/GUDUzhongliang/article/details/131915625## https://blog.csdn.net/mingongge/article/details/130695422 备份 mongodump 参数 -h, --host<hostname> …...

Pytorch学习笔记(GPU训练)

GUP训练 配置pytorch的gup版本主要是在网络模型、输入和标记的数据、损失函数 方式一 直接.cuda()调用&#xff0c;在原有的模型训练代码中的网络模型、输入和标记的数据、损失函数部分直接调用即可 方式二 事先定义好设备device,然后直接.to(device)调用&#xff0c;在原…...

一款开源的shell脚本分析工具

大家好&#xff0c;今天分享一款开源工具--shellcheck。 shellcheck 简介 今天发现的一款神器&#xff0c;如果你日常会接触到shell脚本&#xff0c;或者说自己需要写一些shell脚本&#xff0c;那么强烈建议你用下这个工具。 shellcheck一个静态的shell脚本分析工具&#xf…...

HTML <video> 标签

实例 一段简单的 HTML5 视频: <video src="movie.ogg" controls="controls"> 您的浏览器不支持 video 标签。 </video>定义和用法 <video> 标签定义视频,比如电影片段或其他视频流。 浏览器支持 元素ChromeIEFirefoxSafariOpera&l…...

mac 本地运行 http-proxy-middleware ,请求超时

const http require(http)"/customer": {target: "http://10.10.111.192:8080/",// target: "http://user.jinfu.baohan.com/",changeOrigin: true, // 是否启用跨域// 解决mac 代理超时问题headers: {Connection: "keep-alive"},// …...

【Effective Python】读书笔记-05类与接口

1. 让组合起来的类来实现多层结构&#xff0c;不用使用嵌套的内置类型 2. 让简单的接口接收函数&#xff0c;而不是类的实例 from collections import defaultdictcurrent {a: 1,b: 2,c: 3, }add_to_current {f: 4,e: 5, }def increment():count 0def missing():nonlocal …...

【办公自动化】用Python在Excel中查找并替换数据(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

python学习随笔3

range的使用 range()在python很常用&#xff0c;可以进行初始化和遍历等。 # range(st,ed) # [st, ed)# range(st,ed,step) # range(st, ed, step) i,i step, i 2 * step ... () < ed切片 跟range类似。 ll[st:ed:step]容器 元组 python中的元组中内容不可以进行更…...

《TCP/IP网络编程》阅读笔记--epoll的使用

1--epoll的优点 select()的缺点&#xff1a; ① 调用 select() 函数后针对所有文件描述符的循环语句&#xff1b; ② 调用 select() 函数时需要向操作系统传递监视对象信息&#xff1b; epoll()的优点&#xff1a; ① 无需编写以监视状态变化为目的的针对所有文件描述符的循环语…...

Python 递归函数

视频版教程 Python3零基础7天入门实战视频教程 在一个函数体内调用它自身&#xff0c;被称为函数递归。函数递归包含了一种隐式的循环&#xff0c;它会重复执行某段代码&#xff0c;但这种重复执行无须循环控制。 实例&#xff0c;求123…100的和&#xff0c;用递归实现。数学…...

Java实现计算两个日期之间的工作日天数

需求&#xff1a; 需要在后端实现 计算当前日期与数据库内保存的日期数据之间相隔的工作日数目 实现 import java.time.DayOfWeek; import java.time.LocalDateTime;public class WorkdaysCalculator {public static void main(String[] args) {String givenDateTimeStr &q…...

CS5817规格书|CS5817芯片参数|多功能便携式显示器方案芯片规格

CS5817支持最高4K 60Hz是集睿致远&#xff08;ASL&#xff09; 新推出的多功能显示控制器芯片&#xff0c;CS5817产品可应用于便携显示器、电竞显示器、桌面显示器、一体式台式机和嵌入式显示系统。 Type-C/DP/HDMI2.0输入转LVDS/eDP/VBO 芯片, 高度集成了多种输入输出接口, 并…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...