news 2026/6/15 20:03:40

滑动窗口秒解LeetCode字母异位词

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
滑动窗口秒解LeetCode字母异位词

一、题目理解:什么是 “异位词子串”?

简单说:字符串s中,长度和p相等、且字符出现次数完全一致的子串,就是我们要找的 “异位词子串”,最终返回这些子串的起始索引

比如示例 1 里,p=abc(长度 3),s=cbaebacbdcba(索引 0)、bac(索引 6)都是abc的异位词。

二、核心思路:滑动窗口 + 字符频率数组

异位词的本质是 “字符频率完全匹配”,所以我们可以用一个长度为 26 的数组(对应 26 个小写字母)统计p的字符频率,再用滑动窗口s中动态维护当前窗口的字符频率,一旦窗口长度等于p的长度,就说明找到了一个异位词子串。

三、代码逐行解析(C++ 版)

直接看代码 + 注释,逻辑超清晰:

cpp

class Solution { public: vector<int> findAnagrams(string s, string p) { vector<int> v; // 存储结果(异位词子串的起始索引) int ch[26] = {0}; // 统计p的字符频率(初始全0) // 1. 先统计p中每个字符的出现次数 for(int i=0; i<p.size(); ++i) ch[p[i]-'a']++; // 比如p[i]是'a',则ch[0]++ int left=0; // 滑动窗口的左边界 // 2. 右边界right遍历s的每个字符 for(int right=0; right<s.size(); ++right) { int c = s[right]-'a'; // 当前字符对应的数组下标 ch[c]--; // 窗口右移,当前字符进入窗口,频率-1 // 3. 若当前字符频率<0,说明窗口里该字符多了,左边界右移“挤掉”多余字符 while(ch[c]<0) { ++ch[s[left]-'a']; // 左边界字符移出窗口,频率+1 ++left; // 左边界右移 } // 4. 当窗口长度等于p的长度时,说明找到异位词 if(right-left+1 == p.size()) v.push_back(left); // 记录当前窗口的起始索引left } return v; } };

四、为什么这个思路高效?

滑动窗口的时间复杂度是O(n)(n 是s的长度),因为leftright都只遍历一次;字符频率数组的空间复杂度是O(1)(固定 26 个元素),属于 “时间换空间” 的最优解之一。

五、实战小技巧

遇到 “子串匹配 + 字符频率” 类题目,优先考虑滑动窗口 + 固定长度数组的组合:

  • 用数组统计目标串的频率
  • 窗口在原串中动态维护频率
  • 窗口长度匹配时直接记录结果
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 16:17:52

计算机毕业设计springboot游泳馆管理系统 基于 SpringBoot 的泳池综合运营平台 智慧泳馆一体化服务系统

计算机毕业设计springboot游泳馆管理系统6f19233b &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在“互联网体育”的大趋势下&#xff0c;传统游泳馆的手工登记、纸质票务、Exc…

作者头像 李华
网站建设 2026/6/15 18:45:00

大模型微调技术介绍篇

大模型必须要微调&#xff08;Fine-tuning&#xff09;&#xff0c;例如一个预训练好的大模型就像一个刚从医学院以优异成绩毕业的全科医生&#xff08;通才&#xff09;&#xff0c;他掌握了非常广泛和深厚的医学知识&#xff08;语法、事实、推理能力等&#xff09;。 但是&a…

作者头像 李华
网站建设 2026/6/15 12:40:00

计算机毕业设计springboot七彩花都线上鲜花订购平台 SpringBoot花语心愿在线订花商城 SpringBoot云端花坊鲜花零售平台

计算机毕业设计springboot七彩花都线上鲜花订购平台rzb8b4z2 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在“互联网花卉”浪潮推动下&#xff0c;传统花店急需一条低成本、高…

作者头像 李华
网站建设 2026/6/15 19:31:38

辽宁对外经贸学院毕业论文开题报告

辽宁对外经贸学院毕业论文开题报告姓 名学 号学 院管理学院专 业信息管理与信息系统年级班级2021级XX班学校指导教师企业指导教师论文题目东升白酒销售管理系统分析与设计选题依据与意义1、选题的学术价值、应用价值&#xff08;1&#xff09;学术价值东升白酒销售…

作者头像 李华
网站建设 2026/6/15 18:56:26

WSL用户福音:PyTorch-CUDA-v2.7镜像完美兼容Linux子系统

WSL用户福音&#xff1a;PyTorch-CUDA-v2.7镜像完美兼容Linux子系统 在深度学习开发的世界里&#xff0c;环境配置的“地狱”几乎成了每个工程师都绕不开的一道坎。尤其是对于使用 Windows 系统却不得不依赖 Linux 工具链的研究人员来说&#xff0c;跨平台部署常常意味着数小时…

作者头像 李华
网站建设 2026/6/15 15:52:33

Jupyter Notebook导出PDF/HTML:方便传播PyTorch学习资料

Jupyter Notebook导出PDF/HTML&#xff1a;方便传播PyTorch学习资料 在高校实验室、企业培训现场或开源项目仓库中&#xff0c;你是否曾遇到这样的尴尬&#xff1a;精心编写的 PyTorch 教程发给学生或同事后&#xff0c;对方却因为环境不一致跑不通代码&#xff1f;又或者&…

作者头像 李华