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

文章目录

  • 【LeetCode】【HOT】438. 找到字符串中所有字母异位词

package hot;import java.util.ArrayList;
import java.util.List;public class Solution438 {public static void main(String[] args) {String s = "cbaebabacd";String p = "abc";Solution438 solution = new Solution438();System.out.println(solution.method(s, p));}private List<Integer> method(String s, String p){int n = s.length();int m = p.length();List<Integer> res = new ArrayList<>();int[] cnt = new int[26];for(int i = 0; i < m; i++){cnt[p.charAt(i) - 'a']++;}int a = 0;for(int i : cnt){a += i == 0 ? 0 : 1;}for(int l = 0, r = 0, b = 0; r < n; r++){if(--cnt[s.charAt(r) - 'a'] == 0) b++;if(r - l + 1 > m && ++cnt[s.charAt(l++) - 'a'] == 1) b--;if(b == a) res.add(l);}return res;}
}//时间复杂度为 O(n)
//空间复杂度为 O(1)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 【LeetCode笔记】438. 找到字符串中所有字母异位词(Java、字符串、滑动窗口)

    题目描述 因为自己写的复杂度已经到了 O(n),就没有再参考题解的优化了 更新:滑动窗口方法 思路 & 代码 用一个 int[ ] count 来存储当前判断子串的各字母出现次数 getCou ...

最新文章

  1. STL容器迭代过程中删除元素技巧
  2. java ios websocket_Java WebSocket的例子
  3. 机器学习中有监督学习——回归
  4. 满天星_Java实例_源码+图片素材
  5. 【收藏】Zeppelin与Linkis、Scriptis的实践对比
  6. GradSearchCv 自定义验证集
  7. 使用代理下载Unity AssetStore上资源的方法
  8. 程序媛记一次在线创建索引被kill案例及应对措施
  9. 乐视网回击贾跃亭:债务处理没有进展,先拿出57亿再说
  10. java resouce_Java 获取Resource目录下的文件解决办法
  11. iOS开发UI篇—简单的浏览器查看程序
  12. 微信小程序--图片Image几种mode 设置图片方法
  13. AI音箱工作原理浅析
  14. VMware Workstation 虚拟机下载及安装的详细步骤
  15. HTML 动态背景
  16. BATCH 批处理(一)
  17. 一张图理解EOS是什么
  18. 【电脑使用技巧】1TB的硬盘只有931G 硬盘容量去哪儿了?
  19. (11)RabbitMQ的mandatory、immediate和ReturnListener
  20. 十二时辰与时间对照表,十二经络时辰表

热门文章

  1. Python3.x中Django-xadmin的添加
  2. 逆波兰计算器android源码简书,汪都能理解的逆波兰计算器(C++实现)
  3. vue 文件转换二进制_Vue利用Blob下载原生二进制数组文件
  4. 和push的区别_RocketMQ的消息订阅push和pull的区别
  5. C#图解教程 第十八章 枚举器和迭代器
  6. Activity基础
  7. 导入 kotlin(7)
  8. JS全局函数里面的一些区别
  9. Struts2中 radio标签的详细使用方法
  10. C# semaphore的使用