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

438.找到字符串中所有字母异位词

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

示例 1:

输入: s = "cbaebabacd", p = "abc"
输出: [0,6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。

 示例 2:

输入: s = "abab", p = "ab"
输出: [0,1,2]
解释:
起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。
起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。
起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。

思路:

找字母异位词,我们知道字母异位词有两个特点:

  • 字母异位词的每个词组的异位词经过ASCLL码排序后一定是一样的词组
  • 字母异位词的每个字母出现的次数是一样的

        第一个特性在这道题不适用,因为结果要返回字母异位词子串的起始索引,那么只能从第二个特性出发。

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

        这道题是一个大小不变的滑动窗口,也就是说左指针和右指针是同时移动的,然后每次移动都要记录窗口内字母的出现次数,通过比较数组的内容(相同字母的出现次数)是否相同来决定是不是字母异位词

        Arrays.equals方法可以比较两个数组的内容是否相同

class Solution {public List<Integer> findAnagrams(String s, String p) {int sLen = s.length(), pLen = p.length();if (sLen < pLen) {return new ArrayList<Integer>();}List<Integer> ans = new ArrayList<Integer>();int[] sCount = new int[26];int[] pCount = new int[26];for (int i = 0; i < pLen; ++i) {++sCount[s.charAt(i) - 'a'];++pCount[p.charAt(i) - 'a'];}if (Arrays.equals(sCount, pCount)) {ans.add(0);}for (int i = 0; i < sLen - pLen; ++i) {--sCount[s.charAt(i) - 'a'];++sCount[s.charAt(i + pLen) - 'a'];if (Arrays.equals(sCount, pCount)) {ans.add(i + 1);}}return ans;}
}

http://www.dtcms.com/a/525753.html

相关文章:

  • 鞍山手机网站设计广东省室内设计公司排名
  • 适合seo优化的网站制作网站鼠标特效
  • 【无标题】叽叽喳喳
  • 多线程六脉神剑第四剑:读写锁 (ReaderWriterLockSlim)
  • 网站设关键字wordpress搭建问答系统
  • 泉州高端网站建设微信h5免费制作网站模板下载
  • 第13章-人员管理
  • Maya Python入门:属性连接connectAttr()、创建节点createNode()
  • Java学习之旅第三季-17:Lambda表达式
  • 企业电子商务网站建设和一般建设网站收费标准
  • 【深度学习】深度学习核心:优化与正则化超详细笔记
  • 南昌做网站哪个好如何做好网站推广工作
  • 网站网速慢网站正在建设中_敬请期待
  • 影刀:自动化测试网页应用
  • 做彩票网站要什么接口只放一个图片做网站
  • git重写历史
  • 免费下载app软件网站寻找网站建设公司
  • 动易手机网站外贸商城源码
  • 简述网站建设流程中的各个步骤wordpress破解主题商务
  • 2025年--Lc213-2000. 反转单词前缀-Java版
  • safari针对带有loading=lazy属性img的无奈
  • 需求上线部署流程
  • wap网站生成微信小程序网页微信版官网登录仅传输文件
  • php 数据录入网站网站设计制作公司
  • 网络与信息安全基础
  • 权重的网站网站建设一般多少钱网址
  • Why is it called “callback function“
  • axios响应发生错误时的情况列表
  • 网站备案 接口360网页游戏大厅官网
  • vue导出数据到excel