力扣--滑动窗口438.找到字符串中所有字母异位词

思路分析:

  1. 使用两个数组snumpnum分别记录字符串sp中各字符出现的次数。
  2. 遍历字符串p,统计其中各字符的出现次数,存储在pnum数组中。
  3. 初始化snum数组,统计s的前m-1个字符的出现次数。
  4. 从第m个字符开始遍历s,通过滑动窗口的方式依次判断每个子串是否为p的同位异序子串。
  5. 如果当前子串的snum数组与pnum数组相等,说明当前子串是p的同位异序子串,将其起始位置加入结果数组。
  6. 移动滑动窗口,更新snum数组,继续判断下一个子串。
  7. 返回最终的结果数组。
class Solution {
public:vector<int> findAnagrams(string s, string p) {// 使用两个数组snum和pnum分别记录字符串s和p中各字符出现的次数vector<int> snum(26, 0);  // 用于记录字符串s中各字符出现的次数vector<int> pnum(26, 0);  // 用于记录字符串p中各字符出现的次数int n = s.size();  // 字符串s的长度int m = p.size();  // 字符串p的长度int i, j;vector<int> result;  // 用于存储结果的数组// 如果s的长度小于p的长度,直接返回空结果if (n < m)return result;// 遍历字符串p,统计其中各字符的出现次数for (i = 0; i < m; i++) {pnum[p[i] - 'a']++;}// 初始化snum数组,统计s的前m-1个字符的出现次数for (i = 0; i < m - 1; i++) {snum[s[i] - 'a']++;}// 从第m个字符开始遍历s,依次判断每个子串是否为p的同位异序子串for (i = 0, j = m - 1; j < n;) {snum[s[j] - 'a']++;  // 更新snum数组,加入当前字符// 如果snum数组与pnum数组相等,说明当前子串是p的同位异序子串if (snum == pnum)result.push_back(i);  // 将当前子串的起始位置加入结果数组snum[s[i] - 'a']--;  // 移动窗口,更新snum数组,去除窗口最左侧字符i++;  // 窗口左边界右移j++;  // 窗口右边界右移}return result;  // 返回结果数组}
};

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

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

相关文章

史上最细,接口自动化测试用例设计编写总结,一篇带你打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 说到自动化测试&a…

ArrayList 和 LinkedList 的区别

ArrayList ArrayList 是基于动态数组实现的&#xff0c; 它使用一块连续的内存空间来存储元素&#xff0c;因此访问元素的速度非常快&#xff08;时间复杂度为 O(1)&#xff09;&#xff0c; 但是&#xff0c;在插入或删除元素时&#xff0c;如果位置不在数组末尾&#xff0…

亚信安慧AntDB:“融合+实时”引领数据库创新

在当今多变的数据应用场景中&#xff0c;AntDB作为行业领先的超融合流式实时数仓&#xff0c;秉承着“融合实时”的研发理念&#xff0c;全面应对企业日益复杂的数据处理需求。通过SQL接口访问多种执行引擎&#xff0c;AntDB在实现交易、分析等多重能力的“超融合”方面取得了显…

SQL设计时增加说明列

后关闭sql Studio,然后打开注册表,注册表地址: 计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\SQL Server Management Studio\18.0_IsoShell\DataProject 如有版本不同,红色内容有所变化,修改内容如下: SSVPropViewColumnsSQL70,SSVPropViewColumnsSQL80 全修改为 1,2,6,7…

魔方,3循环是你的秘密[嗑瓜子]。​

引理1.任意Sn中的元素&#xff1a;(N_1N_2N_3...N_m) 证明&#xff1a; (N_1N_2N_3...N_m) (N_1N_m)(N_1N_m-1)...(N_1N_2) 举例&#xff1a; 比如(1234) (14)(13)(12) (3214) (34)(31)(32) 2.任意An可以表示成3循环的乘积&#xff0c; 证明&#xff1a; 1.An中的元素属于…

sql | 左连接、右连接、内连接、全连接

其实这个内容算是老掉牙了 左连接、右连接、内连接、全连接从字面上都好理解 接下来我们来一一解疑 左连接&#xff1a;以左表为主表&#xff0c;根绝条件匹配右表&#xff0c;当右表部分记录因为条件不匹配显示为空&#xff0c;所以最终结果是左表全显示&#xff0c;右表存在字…

抖店无货源模式,采购商品、平台渠道正规吗?相关基础问题解答

我是王路飞。 无货源模式&#xff0c;相信你们也都不陌生了。 每个电商平台都存在这种模式&#xff0c;且我以为&#xff0c;每个电商平台的发展壮大&#xff0c;最应该感谢的就是这些无货源商家了。 而现在说到无货源&#xff0c;最适合普通人的无疑就是抖音小店了。 今天…

[云原生] k8s之存储卷

一、emptyDir存储卷 当Pod被分配给节点时&#xff0c;首先创建emptyDir卷&#xff0c;并且只要该Pod在该节点上运行&#xff0c;该卷就会存在。正如卷的名字所述&#xff0c;它最初是空的。Pod 中的容器可以读取和写入emptyDir卷中的相同文件&#xff0c;尽管该卷可以挂载到每…

汽车上的各种质量:整备质量、总质量、装载质量、簧上质量、簧下质量

文章目录 前言一、整备质量二、额定总质量三、额定装载质量四、簧上质量五、簧下质量总结 前言 一、整备质量 整备质量指的是汽车按照出厂技术条件完全配备&#xff08;包括备胎、工具、各种油水等&#xff09;的质量。汽车的整备质量也就是人们常说的一辆汽车的自重&#xf…

快速提高 Python 爬虫的效率和稳定性

为了提高Python爬虫的效率和稳定性&#xff0c;需要综合考虑多个方面&#xff0c;包括优化网络请求、合理设计爬取策略、处理异常情况、使用合适的工具和库等。以下是一些详细的技术和方法&#xff0c;帮助大家快速提高Python爬虫的效率和稳定性。 1. 网络请求优化 异步请求 …

【Redis】redis持久化

redis 持久化 所谓的持久化&#xff0c;就是把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。 redis 开始是将所有数据保持在内存中&#xff0c;对数据的更新将根据策略配置异步地保存在磁盘中。 持久化的方式 快照方式 快照是某时某刻对数据的完整备份。在以…

Flask从入门到精通

Flask从入门到精通 Flask 0.Flask简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架&#xff0c;对于Werkzeug本质是Socket服务端&#xff0c;其用于接收http请求并对请求进行预处理&#xff0c;然后触发Flask框架&#xff0c;开发人员基…

3dmax画图卡顿解决方法---模大狮模型网

当你在使用3D Max进行画图时遇到卡顿问题&#xff0c;可以尝试以下方法来解决&#xff1a; 减少模型复杂度&#xff1a;如果你的场景中有过多的高细节模型&#xff0c;可能会导致卡顿。尝试减少模型的复杂度&#xff0c;合并或简化多边形数量过多的模型。这将减轻计算机的负担&…

【UE 材质 Niagara】爆炸效果

目录 效果 步骤 一、材质部分 二、Niagara部分 效果 步骤 一、材质部分 1. 创建一个材质&#xff0c;这里命名为“M_Burst” 打开“M_Burst”&#xff0c;设置混合模式为半透明&#xff0c;设置着色模型为无光照&#xff0c;勾选双面显示 在材质图表中首先创建扰动效果 其…

智能指针基础知识【C++】【RAII思想 || unique_ptr || shared_ptrweak_ptr || 循环引用问题】

目录 一&#xff0c;为什么需要智能指针 二&#xff0c;内存泄露的基本认识 1. 内存泄露分类 2. 常见的内存检测工具 3&#xff0c;如何避免内存泄露 三&#xff0c;智能指针的使用与原理 1. RAII思想 2. 智能指针 &#xff08;1. unique_ptr &#xff08;2. shared_…

数据治理实战——翼支付金融板块业务数仓建设和数据治理之路

目录 一、数据治理背景 二、数据治理建设内容 2.1 组织协同 2.2 平台建设 2.3 数据应用治理 2.4 数据规范 2.5 数据安全 三、企业级数仓建设 3.1 调研阶段 2.2 平台护航 2.3 数仓分层 2.4 维度建模 2.4.1 维度建模四步曲 2.4.2 命名规范 2.4.3 资产沉淀 2.4.4 …

【黑马程序员】c++基础知识

文章目录 C初识编写hello world注释变量常量定义常量的两种方式 关键字标识符命名规则 数据类型整形sizeof关键字实型&#xff08;浮点型&#xff09;字符型转义字符字符串型布尔类型数据的输入 运算符程序流程结构顺序结构选择结构三种形式三目运算符switch语句 循环结构while…

百度智能云发布专用向量数据库 VDB 1.0,全新设计内核开启性能狂飙

1 专用向量数据库应对未来业务挑战 向量数据库 向量检索 数据库 向量数据库大致可以分为 2 部分&#xff1a;向量数据的检索&#xff0c;以及向量数据的存储和管理。 向量数据库的性能&#xff0c;比如高 QPS、低延时等&#xff0c;使得业务能够更快的响应用户的查询请求…

371. 牧师约翰最忙碌的一天(tarjan,2-SAT)

371. 牧师约翰最忙碌的一天 - AcWing题库 牧师约翰在 9 月 1 日这天非常的忙碌。 有 N 对情侣在这天准备结婚&#xff0c;每对情侣都预先计划好了婚礼举办的时间&#xff0c;其中第 i 对情侣的婚礼从时刻 Si 开始&#xff0c;到时刻 Ti 结束。 婚礼有一个必须的仪式&#xf…

2024 AI 辅助研发的新纪年

随着人工智能技术的持续发展与突破&#xff0c;2024年AI辅助研发正成为科技界和工业界瞩目的焦点。从医药研发到汽车设计&#xff0c;从软件开发到材料科学&#xff0c;AI正逐渐渗透到研发的各个环节&#xff0c;变革着传统的研发模式。在这一背景下&#xff0c;AI辅助研发不仅…