news 2026/4/15 1:36:44

滑动窗口秒解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/4/14 23:34:44

GitHub star飙升项目:PyTorch-CUDA-v2.7镜像获开发者一致好评

PyTorch-CUDA-v2.7 镜像为何在开发者中迅速走红&#xff1f; 在深度学习项目开发中&#xff0c;你是否曾因环境配置问题浪费数小时甚至数天&#xff1f;明明代码逻辑正确&#xff0c;却因为 CUDA not available 或版本不兼容而卡住&#xff1b;团队协作时&#xff0c;“在我机器…

作者头像 李华
网站建设 2026/4/4 23:28:44

PyTorch-CUDA-v2.7镜像预装torchvision,支持图像分类开箱即用

PyTorch-CUDA-v2.7 镜像预装 torchvision&#xff0c;图像分类开箱即用 在深度学习项目中&#xff0c;最令人头疼的往往不是模型调参&#xff0c;而是环境配置——“为什么代码在我机器上跑得好好的&#xff0c;换台设备就报错&#xff1f;”这种问题几乎每个 AI 工程师都经历…

作者头像 李华
网站建设 2026/4/12 20:45:50

计算机毕业设计springboot动力健身房管理系统 SpringBoot 燃动健身俱乐部综合运营平台 SpringBoot 活力私教工作室智能管理系统

计算机毕业设计springboot动力健身房管理系统cw6umjo8 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。健身行业在疫情后迎来爆发式增长&#xff0c;但传统人工排课、纸质签到、E…

作者头像 李华
网站建设 2026/4/12 12:29:32

transformer架构训练优化:PyTorch-CUDA-v2.7镜像显著降低耗时

Transformer架构训练优化&#xff1a;PyTorch-CUDA-v2.7镜像显著降低耗时 在当前大模型时代&#xff0c;一个再普通不过的实验可能就要跑上几十小时——尤其是当你用CPU训练一个中等规模的Transformer模型时。而更令人头疼的&#xff0c;往往不是漫长的等待&#xff0c;而是环境…

作者头像 李华
网站建设 2026/4/15 15:06:14

msjet40.dll文件丢失损坏找不到 打不开程序软件问题 下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华