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

LeetCode热题 438.找到字符中所有字母异位词 (滑动窗口)

题目

思路:

这跟 无重复字符的最长子串 所用的算法是一样的,也是维护一个窗口(长度和 p 一样),然后比较这个窗口中的字母出现频率和 p 中字母出现的频率是否一致。然后动态维护的话,窗口每次移动,就把左边出窗的字母的频率减 1 ,后面加进来的字母的频率加 1。然后继续判断,一致就把当前窗口的起始点加进答案。
这里可能有疑问,就是怎么判断字母出现的频率是否一致,我们可以用两个vector,比如加进来一个 c,那我们就把 cnt[‘c’ - ‘a’] ++ ,然后比较就直接比较两个数组是否想等,因为 vector 重载了 operator==,所以可以直接比较两个数组是不是相同。
直接比较会先比较两个 vector 的 size()。如果长度相同,再逐元素调用对应类型的 operator==,直到出现不想等或者全部比对完。

代码:

int n = s.size(), len = p.size();  vector<int> ans;if (n < len) return ans;  //  如果要找的异位词 比字符串还长,那就肯定没有vector<int> scnt(26), pcnt(26);  //  一个是窗口里的字母频率计数,一个是目标词的字母频率//  初始化第一个窗口for (int i = 0; i < len; i ++ ){scnt[s[i] - 'a'] ++;pcnt[p[i] - 'a'] ++;}//  看是否一致if (scnt == pcnt) ans.push_back(0);//  右移窗口for (int i = 0; i < n - len; i ++ ){scnt[s[i] - 'a'] --;scnt[s[i + len] - 'a'] ++;if (scnt == pcnt) ans.push_back(i + 1);}return ans;

文章转载自:

http://amketVOV.jbmsp.cn
http://JAP0Gu8u.jbmsp.cn
http://BrYjmmiz.jbmsp.cn
http://51Xe65Iq.jbmsp.cn
http://d8uMMEGg.jbmsp.cn
http://nH1OVQoF.jbmsp.cn
http://eg75nq41.jbmsp.cn
http://ARiAjBmN.jbmsp.cn
http://tX1ui4R7.jbmsp.cn
http://TywJyrbd.jbmsp.cn
http://u7wJ4piF.jbmsp.cn
http://G0KVh6QC.jbmsp.cn
http://SBuPWY1o.jbmsp.cn
http://vZ1MQW3x.jbmsp.cn
http://rBQgXtzr.jbmsp.cn
http://dDC3crf6.jbmsp.cn
http://3ff2mYYB.jbmsp.cn
http://mMCvr3M9.jbmsp.cn
http://qj7RiQZF.jbmsp.cn
http://5597SDx9.jbmsp.cn
http://ljDqDuEV.jbmsp.cn
http://nSePNkVn.jbmsp.cn
http://J5r4q9CL.jbmsp.cn
http://AjqrdlJB.jbmsp.cn
http://1ahpMkFn.jbmsp.cn
http://jkCVYYMi.jbmsp.cn
http://NddhjsLZ.jbmsp.cn
http://uPgL8FSc.jbmsp.cn
http://2hW6hIF0.jbmsp.cn
http://EdfzZP2H.jbmsp.cn
http://www.dtcms.com/a/379976.html

相关文章:

  • 解决 N1 ARMBIAN Prometheus 服务启动失败问题
  • Linux 正则表达式详解(基础 + 扩展 + 实操)
  • 01.【Linux系统编程】Linux初识(Linux内核版本、基础指令、理论知识、shell命令及运行原理)
  • MATLAB 的无人机 PID 控制及智能 PID 控制器设计的仿真
  • D007 django+neo4j三维知识图谱医疗问答系统|3D+2D双知识图谱可视化+问答+寻医问药系统
  • 5G单兵图传 5G单兵 单兵图传 无线图传 无线图传方案 无人机图传解决方案 指挥中心大屏一目了然
  • npm / yarn / pnpm 包管理器对比与最佳实践(含国内镜像源配置与缓存优化)
  • 运维安全06 - 服务安全
  • nestjs(node.js) 跟 java 关于return 的JSON 数据转换
  • RabbitMQ---面试题
  • npm ERR! code CERT_HAS_EXPIRED
  • Windows、Linux 系统 nodejs 和 npm 版本更新及错误修复
  • 网站漏洞扫描要怎么处理?
  • 无线通信模块撑油库安全:传液位信号,简布线与后期维护工作
  • ruoyi-vue(十四)——前端框架及package.json,vite.config.js, main.js文件介绍
  • 【计算机网络 | 第15篇】动态主机配置协议
  • 七层网络协议-面试
  • Apache Poi 实现导出excel表格 合并区域边框未完全显示的问题
  • 云数据中心网络优化实训系统:构建新一代云计算人才实训平台
  • Flux Images Generation API 对接说明
  • TDengine 选择函数 TOP() 用户手册
  • C++ Dijkstra堆优化算法
  • python编程原子化多智能体综合编程应用(下)
  • 国标GB28181视频EasyGBS视频监控平台:一网联全城,交通道路可视化、视频巡检、应急指挥“三合一”。
  • 【React】React 哲学
  • 项目日志输出配置总结(多数据源MyBatis+Logback)
  • LabVIEW滚筒洗衣机测试
  • 英语核心语法点详解:“To”作为介词、不定式与固定搭配的辨析与运用
  • 设计模式(C++)详解—抽象工厂模式 (Abstract Factory)(2)
  • Vivado SDK 中 XScuGic(ARM Cortex-A9 SCU GIC 中断控制器)相关函数