1.1我的题解
先将p排序,然后再将s从任意位置开始截取一段长度和p一致的子串,然后排序,然后和p排序后的比较,如果一致的话,就放入答案之中

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

但是超时了,不清楚超时的原因,不知道用sort实现排序的时间大概时多少。

1.2他人的解法

class Solution {public:vector<int> findAnagrams(string s, string p) {int n = s.size();int m = p.size();if(n < m) return {};vector<int> res;vector<int> table1(26,0);vector<int> table2(26,0);for(int i = 0;i < m;i++){table1[s[i]-'a']++;table2[p[i]-'a']++;}if(table1 == table2)res.push_back(0);for(int i = m;i < n;i++){table1[s[i]-'a']++;table1[s[i-m]-'a']--;if(table2 == table1)res.push_back(i-m+1);//i-m被移动走了}return res;}
};

1)制作p的所有字符制作table,和从任意位置开始截取相同长度的s制作table,
2)比较两个table的大小,一样就返回截取的字符串的第一个下标
3)制作s的table的具体方法是,删去第一个字符的信息,加上第二个字符的信息
4)实现3)的操作要保证i不能小于n,以及要用到p的table,所以要单独开一个循环

2021-06-03Leetcode 438.找到字符串中所有字母异位词相关推荐

  1. 【LeetCode】【HOT】438. 找到字符串中所有字母异位词(滑动窗口)

    [LeetCode][HOT]438. 找到字符串中所有字母异位词 文章目录 [LeetCode][HOT]438. 找到字符串中所有字母异位词 package hot;import java.uti ...

  2. 438. 找到字符串中所有字母异位词【异位词-哈希数组】

    438. 找到字符串中所有字母异位词 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引.不考虑答案输出的顺序. 异位词 指由相同字母重排列形成的字符串(包括 ...

  3. Java实现 LeetCode 438 找到字符串中所有字母异位词

    438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p ...

  4. 438. 找到字符串中所有字母异位词【我亦无他唯手熟尔】

    438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 题解 官方 438. 找到字符串中所有字母异位词 难度 中等 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 ...

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

    1. 题目 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100 ...

  6. LeetCode 438. 找到字符串中所有字母异位词(双指针+滑动窗口)

    题目描述 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100. ...

  7. leetcode刷题(91)——438. 找到字符串中所有字母异位词

    给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100. 说明: ...

  8. leetcode 438. Find All Anagrams in a String | 438. 找到字符串中所有字母异位词(Java)

    题目 https://leetcode.com/problems/find-all-anagrams-in-a-string/ 题解 方法1:尝试构造一种"与顺序无关的哈希" 思考 ...

  9. 【解题报告】Leecode 438. 找到字符串中所有字母异位词——Leecode每日一题系列

    今天是坚持每日一题打卡的第二十七天 题目链接:https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/ 题解汇总:https:// ...

  10. LeetCode:438. 找到字符串中所有字母异位词(简单易懂)

    一.题目描述: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引.不考虑答案输出的顺序. 异位词 指由相同字母重排列形成的字符串(包括相同的字符串). 示例 ...

最新文章

  1. C#编码简单性之代码篇(如何编写简短的C#代码,随时更新)
  2. .Net Core下基于Emit的打造AOP
  3. 文本分析工具 数据科学_数据科学工具
  4. 阿里旺旺在线客服代码 贸易通在线状态代码
  5. 设计模式笔记四:建造者模式
  6. bzoj20892090: [Poi2010]Monotonicity
  7. Riverbed收购Mazu Networks巩固领导者地位
  8. python小白从哪来开始-如何从零开始学习Python【小白入门】
  9. 《程序是怎样跑起来的》第六章有感
  10. NRF52840-QIAA-R Nordic BLE5.0蓝牙无线收发芯片
  11. 微信公众号服务号如何在线给粉丝发送模板消息
  12. JDK 中需要掌握的常用类库
  13. 创业者两大特征:喜欢折腾与坚持不懈
  14. taobao.product.get淘宝天猫oAuth2.0商品API接口
  15. Linux 命令整理(一)
  16. 卖货文案不会写?试试这5个方法(二)
  17. 如何用php农场项目,2020全新亲测php农场游戏源码-金币菇种植理财区块链源码 带商城系统...
  18. erdas裁剪影像_ERDAS软件应用(一)遥感影像数据裁剪
  19. 堆(Heap)数据结构介绍
  20. debug功能使用解析

热门文章

  1. 蚂蚁全媒体中心刘鑫炜:有什么好的网站可以为自己树立品牌形象?
  2. 《学籍信息管理系统》java+mysql+gui实现(全套免费代码+保姆教学+60页实验报告)
  3. 江波龙深化存储技术优势 紧密结合物联网应用需求创新
  4. 堆排序思想和案例图解
  5. url自动编码问题,包含; / ? : @ = + $ , #的密文Http url请求问题
  6. Canvas 绘制字体图标库
  7. 简练网软考知识点整理-项目组织分解结构OBS
  8. 勒让德多项式的值(函数调用)
  9. 第三天的实现,主要是封装优化,不会文件啊,把优化后的主文件发上来(用了xlb)
  10. 查询李姓学生的学号、姓名、性别和所在系信息