2021-06-03Leetcode 438.找到字符串中所有字母异位词
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.找到字符串中所有字母异位词相关推荐
- 【LeetCode】【HOT】438. 找到字符串中所有字母异位词(滑动窗口)
[LeetCode][HOT]438. 找到字符串中所有字母异位词 文章目录 [LeetCode][HOT]438. 找到字符串中所有字母异位词 package hot;import java.uti ...
- 438. 找到字符串中所有字母异位词【异位词-哈希数组】
438. 找到字符串中所有字母异位词 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引.不考虑答案输出的顺序. 异位词 指由相同字母重排列形成的字符串(包括 ...
- Java实现 LeetCode 438 找到字符串中所有字母异位词
438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p ...
- 438. 找到字符串中所有字母异位词【我亦无他唯手熟尔】
438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 题解 官方 438. 找到字符串中所有字母异位词 难度 中等 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 ...
- LeetCode 438. 找到字符串中所有字母异位词(滑动窗口)
1. 题目 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100 ...
- LeetCode 438. 找到字符串中所有字母异位词(双指针+滑动窗口)
题目描述 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100. ...
- leetcode刷题(91)——438. 找到字符串中所有字母异位词
给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100. 说明: ...
- leetcode 438. Find All Anagrams in a String | 438. 找到字符串中所有字母异位词(Java)
题目 https://leetcode.com/problems/find-all-anagrams-in-a-string/ 题解 方法1:尝试构造一种"与顺序无关的哈希" 思考 ...
- 【解题报告】Leecode 438. 找到字符串中所有字母异位词——Leecode每日一题系列
今天是坚持每日一题打卡的第二十七天 题目链接:https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/ 题解汇总:https:// ...
- LeetCode:438. 找到字符串中所有字母异位词(简单易懂)
一.题目描述: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引.不考虑答案输出的顺序. 异位词 指由相同字母重排列形成的字符串(包括相同的字符串). 示例 ...
最新文章
- C#编码简单性之代码篇(如何编写简短的C#代码,随时更新)
- .Net Core下基于Emit的打造AOP
- 文本分析工具 数据科学_数据科学工具
- 阿里旺旺在线客服代码 贸易通在线状态代码
- 设计模式笔记四:建造者模式
- bzoj20892090: [Poi2010]Monotonicity
- Riverbed收购Mazu Networks巩固领导者地位
- python小白从哪来开始-如何从零开始学习Python【小白入门】
- 《程序是怎样跑起来的》第六章有感
- NRF52840-QIAA-R Nordic BLE5.0蓝牙无线收发芯片
- 微信公众号服务号如何在线给粉丝发送模板消息
- JDK 中需要掌握的常用类库
- 创业者两大特征:喜欢折腾与坚持不懈
- taobao.product.get淘宝天猫oAuth2.0商品API接口
- Linux 命令整理(一)
- 卖货文案不会写?试试这5个方法(二)
- 如何用php农场项目,2020全新亲测php农场游戏源码-金币菇种植理财区块链源码 带商城系统...
- erdas裁剪影像_ERDAS软件应用(一)遥感影像数据裁剪
- 堆(Heap)数据结构介绍
- debug功能使用解析
热门文章
- 蚂蚁全媒体中心刘鑫炜:有什么好的网站可以为自己树立品牌形象?
- 《学籍信息管理系统》java+mysql+gui实现(全套免费代码+保姆教学+60页实验报告)
- 江波龙深化存储技术优势 紧密结合物联网应用需求创新
- 堆排序思想和案例图解
- url自动编码问题,包含; / ? : @ = + $ , #的密文Http url请求问题
- Canvas 绘制字体图标库
- 简练网软考知识点整理-项目组织分解结构OBS
- 勒让德多项式的值(函数调用)
- 第三天的实现,主要是封装优化,不会文件啊,把优化后的主文件发上来(用了xlb)
- 查询李姓学生的学号、姓名、性别和所在系信息