题目描述

给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。
字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。
说明:
字母异位词指字母相同,但排列不同的字符串。
不考虑答案输出的顺序。
示例 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” 的字母异位词。

思路

详见链接

代码

class Solution:def findAnagrams(self,s:str,p:str):res = []window = {}needs = {}for c in p:needs[c] = needs.get(c,0) + 1length , limit = len(p) , len(s)left = right = 0while right < limit:c = s[right]if c not in needs:window.clear()left = right = right + 1else:window[c] = window.get(c,0) + 1if right - left +1 == length:if window == needs:res.append(left)window[s[left]] -= 1left += 1right += 1return res
test = Solution()
test.findAnagrams("cbaebabacd","abc")

效果

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

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

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

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

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

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

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

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

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

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

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

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

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

  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. 【LeetCode笔记】438. 找到字符串中所有字母异位词(Java、字符串、滑动窗口)

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

最新文章

  1. Cosmos的基石:IL2CPU编译器--.net/C#开源操作系统学习系列三
  2. 基于springboot实现快递代取管理系统
  3. linux 根目录下的子目录的意义
  4. Android 高级自定义View实战
  5. 微课与计算机技术的论文,微课在高校计算机教学的运用论文
  6. java编写一个框架_手把手教你写一个基于 RxJava 的扩展框架
  7. signature=d522a0024e7d20dbfee94b566a5dfed5,End-to-end (e2e) application packet flow visibility
  8. 洛谷——P1162 填涂颜色【bfs】
  9. 拓端tecdat|R、Python、Open Refine采集pdf数据,清理数据和格式化数据
  10. iOS数据持久化-OC
  11. python绘制散点图,非常全,非常详细(已验证)
  12. 电脑开机是哪个键 电脑常用快捷键盘点
  13. 解决the application was unable to start correctly(0x000007b)与 缺少VCRUNTIME140.dll
  14. c语言tc环境下while多大,求救,wintc环境下,写了程序,调试不出来,先谢谢了...
  15. IK分词器结合ES使用
  16. 期权程序化交易接口有哪些?
  17. 主机配置文件(HostProfiles)的创建与应用
  18. 软件质量管理体系 type:pdf_荆门医疗器械软件注册价格,三类医疗器械注册_上海峦灵...
  19. 台式计算机如何双屏显示,一个电脑主机怎样接两个显示器_一个电脑连接两个显示器如何操作-win7之家...
  20. [PaddleSeg源码阅读] PaddleSeg Validation 中添加 Boundary IoU的计算(3)——添加Boundary IoU

热门文章

  1. Connection reset问题,INFO: I/O exception (java.net.SocketException) caught when processing reques
  2. ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
  3. AJAX 跨域调用和 Java 跨域 发送请求
  4. 无法将mysql服务器连接到_无法从java连接到mysql服务器
  5. 织梦php me,GitHub - czmz/DedeCMSv5: 中国专业的PHP网站内容管理系统-织梦内容管理系统...
  6. swift和java_Swift和Java关于字符串和字符的比较
  7. python跳一跳编程构造_python实现微信跳一跳辅助工具步骤详解
  8. 今天小小的总结一下最近的小程序中的问题
  9. pytorch 入门学习加载数据集-8
  10. 经验的总结,需要记录。