LeetCode Hot 100 找到字符串中所有字母异位词

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

示例 1:

输入: s = "cbaebabacd", p = "abc"
输出: [0,6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。

 示例 2:

输入: s = "abab", p = "ab"
输出: [0,1,2]
解释:
起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。
起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。
起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。

提示:

  • 1 <= s.length, p.length <= 3 * 104
  • s 和 p 仅包含小写字母

方法一:滑动窗口
思路

根据题目要求,我们需要在字符串 s 寻找字符串 p 的异位词。因为字符串 p 的异位词的长度一定与字符串 p 的长度相同,所以我们可以在字符串 s 中构造一个长度为与字符串 p 的长度相同的滑动窗口,并在滑动中维护窗口中每种字母的数量;当窗口中每种字母的数量与字符串 p 中每种字母的数量相同时,则说明当前窗口为字符串 p 的异位词。

算法

在算法的实现中,我们可以使用数组来存储字符串 p 和滑动窗口中每种字母的数量。

细节

当字符串 s 的长度小于字符串 p 的长度时,字符串 s 中一定不存在字符串 p 的异位词。但是因为字符串 s 中无法构造长度与字符串 p 的长度相同的窗口,所以这种情况需要单独处理。

代码

class Solution {
public:vector<int> findAnagrams(string s, string p) {int sLen = s.size(),pLen = p.size();if(sLen < pLen){return vector<int>();}vector<int> sCount(26);vector<int> pCount(26);vector<int> ans;for(int i = 0; i < pLen;i ++){++sCount[s[i] - 'a'];++pCount[p[i] - 'a'];}if(sCount == pCount){ans.emplace_back(0);}for(int i = 0; i < sLen - pLen; ++i){--sCount[s[i] - 'a'];++sCount[s[i+pLen] - 'a'];if(sCount == pCount){ans.emplace_back(i + 1);}}return ans;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86732.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86732.shtml

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

相关文章

关于庐山派多视频层(layer)和bind_layer的应用

嘉立创分了适配层和OSD&#xff08;我称它为图片层&#xff09;顾名思义&#xff0c;一个是能显示视频流到LCD屏幕&#xff0c;一个是只能显示照片&#xff0c;也就是你可以对不同层进行操作而不影响其他层&#xff0c;解决的场景就是用于你画了一个正方形在照片上&#xff0c;…

多传感器标定简介

目录 标定内容及方法 雷达内参标定 IMU内参标定 编码器内参标定 相机内参标定 雷达和相机外参标定 多雷达外参标定 手眼标定 融合中标定 总结 连续时间 标定内容及方法 雷达内参标定 1) 目的 由于安装原因&#xff0c;线束之间的夹角和设计不一致&#xff0c;会导致…

day46/60

浙大疏锦行 DAY 46 通道注意力(SE注意力) 知识点回顾&#xff1a; 不同CNN层的特征图&#xff1a;不同通道的特征图什么是注意力&#xff1a;注意力家族&#xff0c;类似于动物园&#xff0c;都是不同的模块&#xff0c;好不好试了才知道。通道注意力&#xff1a;模型的定义和插…

提升创作效率:轻松调用固定素材与模板

日常工作和生活中&#xff0c;我们经常需要复制粘贴不同类型的数据&#xff0c;如文本、图片、文件等。使用剪切板管理工具可以快速访问之前复制的内容&#xff0c;而无需反复切换应用进行复制操作。 这款绿色便携版应用&#xff0c;无需安装&#xff0c;双击即开&#xff0c;…

【C++】组合模式

目录 一、模式核心概念与结构二、C 实现示例&#xff1a;文件系统三、组合模式的关键特性四、应用场景五、组合模式与其他设计模式的关系六、C 标准库中的组合模式应用七、优缺点分析八、实战案例&#xff1a;图形编辑器九、实现注意事项如果这篇文章对你有所帮助&#xff0c;渴…

C++包管理工具:conan2持续集成 (CI) 教程

1.持续集成 (CI) ​ 这是一个高级主题&#xff0c;需要具备 Conan 的基础知识。请先阅读并练习用户教程。本节面向设计和实施涉及 Conan 包的生产 CI 管道的 DevOps 和构建工程师。如果不是这种情况&#xff0c;您可以跳过本节。 持续集成 (CI) 对不同用户和组织有不同的含义…

免费SSL证书一键申请与自动续期

免费SSL证书申请与自动续期教程 本文介绍如何通过乐此加密&#xff08;www.letsencrypt.top) 实现免费SSL证书一键配置和自动续期 一、准备工作 服务器要求 Linux 系统&#xff08;推荐 Ubuntu/CentOS&#xff09;已安装 curl 和 crontab拥有 sudo 权限的用户 域名验证 确保域…

【NLP】自然语言项目设计

目录 项目简介 要求 需要考虑的问题 硬件需求和环境配置 n卡驱动配置 以cuda11.8 版本为例 下载对应的cudnn(version11) 安装GPU版本的torch 安装gpu版本的TensorFlow 检查cuda安装情况 项目简介 训练一个模型&#xff0c;实现歌词仿写生成 任务类型&#xff1a;文本…

设计模式:观察者模式 (Observer) 案例详解

目录 一、引言&#xff1a;为什么需要观察者模式&#xff1f; 二、观察者模式的核心原理 1. 角色划分 2. 类图关系 三、经典案例解析 案例1&#xff1a;天气监测系统 案例2&#xff1a;股票价格监控系统 案例3&#xff1a;MVC架构中的模型-视图分离 案例4&#xff1a;J…

CTF-Misc:开启全方位解题之旅

目录 一、CTF-Misc 入门指引二、基础技能储备2.1 文件格式识别2.2 基础工具使用 三、信息搜集技巧3.1 搜索引擎技巧3.2 网络信息挖掘 四、编码转换奥秘4.1 常见编码类型4.2 编码转换工具 五、隐写分析秘籍5.1 图片隐写5.1.1 LSB 隐写5.1.2 颜色通道与 Exif 信息5.1.3 图片修复与…

Adobe创意套件深度挖掘:效率倍增与灵感迸发的新玩法

最近在深入体验奥地利Blueskyy艺术学院的Adobe正版教育订阅&#xff0c;并研究全家桶时有不少新发现&#xff0c;忍不住想和大家分享一下。 先简单说下这个订阅的感受&#xff1a; Firefly 积分。 这应该是我用过Firefly积分最多的版本&#xff0c;1500点/周。对于我们这些创意…

左神算法之有序二维矩阵中的目标值查找

有序二维矩阵中的目标值查找 目录 有序二维矩阵中的目标值查找1. 题目描述2. 问题解释3. 解决思路方法一&#xff1a;逐行二分查找&#xff08;适合行数较少的情况&#xff09;方法二&#xff1a;利用行列有序特性&#xff08;最优解&#xff09; 4. 代码实现5. 总结 1. 题目描…

深入理解AVL树及其旋转操作

AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单枝树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种方法…

URL带有中文会引入哪些问题

处理含中文字符的 URL 1 为什么会出现“乱码”或崩溃&#xff1f; URL 标准&#xff08;RFC 3986&#xff09;规定&#xff1a;除少数保留字符外&#xff0c;URL 只能包含 ASCII。中文属于 Unicode&#xff0c;因此必须先转换。如果直接把 https://example.com/路径/ 这样的字…

结构体字段能否单独加 mut

你问的这个问题在 Rust 里很常见&#xff1a; 一、结构体字段能否单独加 mut 1. 结构体字段能否单独加 mut&#xff1f; 不能。Rust 中&#xff0c;mut 是用来修饰变量绑定的&#xff0c;可变性是绑定的属性&#xff0c;而不是结构体字段本身的属性。 你不能写&#xff1a; …

scGPT-spatial 复现

文章目录 ✅ 总体流程总览&#xff08;从 H5AD 到模型训练&#xff09;&#x1f527; 步骤 1&#xff1a;读取 H5AD 文件并做基础预处理&#x1f9f1; 步骤 2&#xff1a;构造训练样本输入&#xff08;token、value&#xff09;&#x1f4e6; 步骤 3&#xff1a;使用 DataColla…

运放电压跟随器为什么要加电阻

运放电压跟随器为什么要加电阻 我们常见运放的电压跟随器如下&#xff1a; 有时候会看见电路中加两个电阻&#xff1a; 作用就是保护运放&#xff0c;起限流电阻的作用。 当输入电压高的时候&#xff0c;运放内部存在钳位二极管&#xff0c;此电阻就能限流。 并不是所有运放…

MinerU 2.0部署

简介 MinerU 2.0使用sglang加速&#xff0c;与之前差别较大&#xff0c;建议按照官方的Docker镜像的方式启动。 Docker镜像 Dockerfile 这是官方的Dockerfile # Use the official sglang image FROM lmsysorg/sglang:v0.4.7-cu124# install mineru latest RUN python3 -m …

黑马python(十七)

目录&#xff1a; 1.数据可视化-地图-基础案例 2.全国疫情地图 3.河南省疫情地图绘制 4.基础柱状图构建 5.基础时间线柱状图绘制 6.动态GDP柱状图绘制 1.数据可视化-地图-基础案例 图示有点对的不准&#xff0c;可以通过后面的参数 2.全国疫情地图 3.河南省疫情地图绘制…

Segment Anything in High Quality之SAM-HQ论文阅读

摘要 最近的 Segment Anything Model(SAM)在扩展分割模型规模方面取得了重大突破,具备强大的零样本能力和灵活的提示机制。尽管 SAM 在训练时使用了 11 亿个掩码,其掩码预测质量在许多情况下仍不理想,尤其是对于结构复杂的目标。我们提出了 HQ-SAM,使 SAM 能够精确地分割…