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

滑动窗口,438找出字符串中所有字母的异位词

1.题目

2.解析

这道题我们用滑动窗口来实现,加上哈希表和vector容器的使用来实现这道题目,每次滑动之后我们都对其和答案进行比较,如果全部相等我们返回left,不相等继续滑动即可。

本质就是我们把p中相同数量的字母框起来,然后依次向s中向右滑动,每滑动一次我们都保证了滑动窗口中字母的数量和p中的相等,每次滑动之后我们都对窗口中的字母和p中存储在哈希表中的进行对比。相等返回left,不相等继续向右滑动,知道right出窗口结束滑动。

3.代码

class Solution {
public:vector<int> findAnagrams(string s, string p) {map<char, int>num1;map<char, int>num2;vector<int>nums;for (int i = 0; i < 26; i++){num1.insert({ 'a' + i,0});num2.insert({ 'a' + i,0});}for (auto e : p){num1[e]++;}for (int i = 0; i < p.size(); i++){num2[s[i]]++;}for (int left = 0, right = p.size() - 1; right < s.size();){int count = 0;for (int j = 0; j < 26; j++){if (num1['a' + j]!= num2['a' + j]) {count++;break;}}if (count == 0)nums.push_back(left);num2[s[left]]--;left++;right++;num2[s[right]]++;}return nums;}
};

http://www.xdnf.cn/news/384139.html

相关文章:

  • cpu缓存一致性
  • C语言模糊不清的知识
  • BC12-字符金字塔
  • 【C++贪心 位运算】B3930 烹饪问题|普及
  • RESTful API 与传统 API 设计:深度对比与完整实践指南RESTful 与 传统 API 的核心区别
  • 基于STM32的LCD信号波形和FFT频谱显示
  • Pandas 内存不足 或 UDF 执行慢
  • Python面向对象编程:初识类与对象
  • c++学习之路(3)
  • sched_fair 调度:负载权重、虚拟运行时间与最小虚拟时间
  • 安达发|制药车间生产计划准备性的关键影响因素及优化策略研究
  • 力扣刷题(第二十二天)
  • 最小生成树
  • 挪度半身复苏小安妮模型QCPR成人半身急救心肺复苏模拟人
  • Python训练营打卡DAY21
  • Yocto中的${D}解读
  • CTFd 文件上传模块解读
  • CSDN 中 LaTeX 数学公式输入方法
  • NVMe控制器之仿真平台搭建
  • 深入探究 InnoDB 的写失效问题
  • C34-递归函数编码实战
  • Profinet转CanOpen协议转换网关,破解工业设备“语言障碍”
  • 前端CSS场景题篇【持续更新】
  • Pass@1、EM、LC-winrate/winrate、CSL—— 大模型评测指标
  • Linux时间同步服务
  • Java多线程(超详细版!!)
  • 智能指针:C++内存管理的现代解决方案
  • 专业级软件卸载工具:免费使用,彻底卸载无残留!
  • 【CF】Day56——Codeforces Round 940 (Div. 2) and CodeCraft-23 BCD
  • 警备,TRO风向预警,In-N-Out Burgers维权风暴来袭