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

【力扣】438.找到字符串中所有字母异位词

AC截图

题目

思路

我一开始是打算将窗口内的s子字符串和p字符串都重新排序,然后判断是否相等,再之后进行窗口滑动。不过缺点是会超时。

class Solution {
public:vector<int> findAnagrams(string s, string p) {vector<int> vec;if(s.size()<p.size()){return vec;}int len=p.size();sort(p.begin(),p.end());for(int i=0;i<=s.size()-len;i++){string ss = s.substr(i,len);sort(ss.begin(),ss.end());if(p==ss){vec.push_back(i);}}return vec;}
};

后面改用滑动窗口,

因为字符串 p 的异位词的长度一定与字符串 p 的长度相同,所以我们可以在字符串 s 中构造一个长度为与字符串 p 的长度相同的滑动窗口,并在滑动中维护窗口中每种字母的数量;当窗口中每种字母的数量与字符串 p 中每种字母的数量相同时,则说明当前窗口为字符串 p 的异位词。

关键部分在此:

    //开始让窗口进行滑动for(int i=0;i<sLen-pLen;i++){ //i是滑动前的首位--scount[s.charAt(i) -'a'];       //将滑动前首位的词频删去++scount[s.charAt(i+pLen) -'a'];  //增加滑动后最后一位的词频(以此达到滑动的效果)//判断滑动后处,是否有异位词if(scount==pcount){vec.push_back(i+1);} }

代码

class Solution {
public:vector<int> findAnagrams(string s, string p) {vector<int> vec;if(s.size()<p.size()){return vec;}int plen=p.size();int slen=s.size();vector<int> scount(26);vector<int> pcount(26);for(int i=0;i<plen;i++){pcount[p[i]-'a']++;scount[s[i]-'a']++;}if(scount==pcount){vec.push_back(0);}for(int i=0;i<slen-plen;i++){scount[s[i]-'a']--;scount[s[i+plen]-'a']++;if(scount==pcount){vec.push_back(i+1);}}return vec;}
};

http://www.lryc.cn/news/530465.html

相关文章:

  • 2024具身智能模型汇总:从训练数据、动作预测、训练方法到Robotics VLM、VLA
  • Day33【AI思考】-函数求导过程 的优质工具和网站
  • 【URL】一个简单基于Gym的2D随机游走环境,用于无监督强化学习(URL)
  • 【VM】VirtualBox安装ubuntu22.04虚拟机
  • MySQL的GROUP BY与COUNT()函数的使用问题
  • C# 精炼题18道题(类,三木运算,Switch,计算器)
  • 96,【4】 buuctf web [BJDCTF2020]EzPHP
  • 数据库 - Sqlserver - SQLEXPRESS、由Windows认证改为SQL Server Express认证进行连接 (sa登录)
  • 2025年02月02日Github流行趋势
  • 【数据分析】案例03:当当网近30日热销图书的数据采集与可视化分析(scrapy+openpyxl+matplotlib)
  • 如何使用 DeepSeek 和 Dexscreener 构建免费的 AI 加密交易机器人?
  • buu-jarvisoj_level0-好久不见30
  • 深度学习查漏补缺:1.梯度消失、梯度爆炸和残差块
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.2 多维数组切片:跨步访问与内存布局
  • ResNet--深度学习中的革命性网络架构
  • TypeScript语言的语法糖
  • 17.2 图形绘制4
  • tomcat核心组件及原理概述
  • 本地部署DeepSeek教程(Mac版本)
  • MyBatis-Plus笔记-快速入门
  • 爬取豆瓣书籍数据
  • 基于微信小程序的电子商城购物系统设计与实现(LW+源码+讲解)
  • 6-图像金字塔与轮廓检测
  • 【Ai】DeepSeek本地部署+Page Assist图形界面
  • 【最长不下降子序列——树状数组、线段树、LIS】
  • 【实战篇章】深入探讨:服务器如何响应前端请求及后端如何查看前端提交的数据
  • Games104——引擎工具链基础
  • 分层多维度应急管理系统的设计
  • 【漏斗图】——1
  • (二)QT——按钮小程序