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

模块二——滑动窗口:438.找到字符串中所有字母异位词

文章目录

  • 题目描述
  • 算法原理
    • 滑动窗口+哈希表
  • 代码实现

题目描述

题目链接:438.找到字符串中所有字母异位词
在这里插入图片描述

算法原理

滑动窗口+哈希表

  • 因为字符串p的异位词的⻓度⼀定与字符串p 的⻓度相同,所以我们可以在字符串s 中构造⼀个⻓度为与字符串p的⻓度相同的滑动窗⼝,并在滑动中维护窗⼝中每种字⺟的数量;
  • 当窗⼝中每种字⺟的数量与字符串p 中每种字⺟的数量相同时,则说明当前窗⼝为字符串p的异位词;
  • 因此可以⽤两个⼤⼩为26 的数组来模拟哈希表,⼀个来保存s 中的⼦串每个字符出现的个数,另⼀个来保存p中每⼀个字符出现的个数。这样就能判断两个串是否是异位词。

代码实现

class Solution {
public:vector<int> findAnagrams(string s, string p) {int hash1[26] = { 0 };//统计字符串p中每个字符出现的个数for(auto ch : p)hash1[ch - 'a']++;int hash2[26] = { 0 };//统计窗口里面每一个字符出现的个数vector<int> res;for(int left = 0,right = 0,count = 0;right < s.size();right++)//1.控制窗口{char in = s[right];if(++hash2[in - 'a'] <= hash1[in - 'a'])count++;//2.进窗口+维护countwhile(right - left + 1 > p.size())//3.判断{char out = s[left++];if(hash2[out - 'a']-- <= hash1[out - 'a'])count--;//维护count+出窗口}if(count == p.size()) res.push_back(left);//更新结果}return res;}
};
http://www.lryc.cn/news/260187.html

相关文章:

  • 排序算法(二)-冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、基数排序
  • 智能优化算法应用:基于探路者算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 高效排队,紧急响应:RabbitMQ Priority Queue全面指南【RabbitMQ 九】
  • Java中使用EasyExcel写excel文件
  • 【C语言程序设计】函数程序设计
  • GDPU 数据结构 天码行空14
  • 科技提升安全,基于YOLOv5系列模型【n/s/m/l/x】开发构建商超扶梯场景下行人安全行为姿态检测识别系统
  • 【网络安全】网络防护之旅 - 对称密码加密算法的实现
  • 鸿蒙arkTs Toast抽取 及使用
  • 网络安全渗透测试的相关理论和工具
  • C 语言 xml 库的使用
  • 群晖(Synology)云备份的方案是什么
  • Flask 中的跨域难题:定义、影响与解决方案深度解析
  • 汽车IVI中控开发入门及进阶(十二):V4L2视频
  • gitlab下载安装
  • Jmeter,提取响应体中的数据:正则表达式、Json提取器
  • 【SpringBoot篇】基于布隆过滤器,缓存空值,解决缓存穿透问题 (商铺查询时可用)
  • Gitlab基础篇: Gitlab docker 安装部署、Gitlab 设置账号密码
  • c++常见函数处理
  • MYsql第二次作业
  • SQLAlchemy 第三篇
  • 交互过程中影响信息质量好坏的因素
  • 服务器上配置jupyter,提示Invalid credentials如何解决
  • Axure中动态面板使用及轮播图多种登录方式左侧导航栏之案列
  • 大数据之旅-问题反思
  • 系统级基础信号知识【Linux】
  • Excel单元格隐藏如何取消?
  • Visual Studio(VS)常用快捷键(最详细)
  • UDP特性之组播(多播)
  • ElasticSearch之cat shards API