当前位置: 首页 > 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;}
};

相关文章:

  • Linux:线程同步与互斥
  • JAVA自动装箱拆箱
  • make和makefile的使用,以及写一个简单的进度条程序
  • DAMA第10章深度解析:参考数据与主数据管理的核心要义与实践指南
  • 挪度半身复苏小安妮模型QCPR成人半身急救心肺复苏模拟人
  • 使用python脚本连接SQL Server数据库导出表结构
  • “AI+城市治理”智能化解决方案
  • Profinet转CanOpen协议转换网关,破解工业设备“语言障碍”
  • 计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 08.阴影
  • Vue.js框架的优缺点
  • 【免费工具】图吧工具箱2025.02正式版
  • Discriminative and domain invariant subspace alignment for visual tasks
  • GD32H7复位后程序调用函数时间增加
  • 第八周作业
  • 基于STM32的LCD信号波形和FFT频谱显示
  • “睿思 BI” 系统介绍
  • 自学嵌入式 day 17- c语言-第11章 结构体与共用体 第12章 位运算
  • 批量导出docker镜像
  • 如何解决 PowerShell 显示 “此系统上禁用了脚本运行” 的问题
  • 在资源受限设备上实现手势识别:基于包络EMG数据和实时测试的Tiny-ML方法
  • “80后”李灿已任重庆市南川区领导,此前获公示拟提名为副区长人选
  • 上海第四批土拍成交额97亿元:杨浦宅地成交楼板单价半年涨近7000元
  • 上海“电子支付费率成本为0”背后:金融服务不仅“快”和“省”,更有“稳”和“准”
  • 竞彩湃|霍芬海姆看到保级曙光,AC米兰专注于意大利杯
  • 看展览|2025影像上海艺博会:市场与当代媒介中的摄影
  • 无人机穿越大理千年古塔落券洞内,涉事“飞手”被行拘10日