《python算法与数据结构2000讲》0438. 找到字符串中所有字母异位词
- 标签:哈希表、字符串、滑动窗口
- 难度:中等
题目大意
给定两个字符串 s
和 p
。
要求:找到 s
中所有 p
的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。
- 异位词:指由相同字母重排列形成的字符串(包括相同的字符串)。
解题思路
维护一个固定长度为 len(p)
的滑动窗口。于是问题的难点变为了如何判断 s
的子串和 p
是异位词。可以使用两个字典来分别存储 s
的子串中各个字符个数和 p
中各个字符个数。如果两个字典对应的键值全相等,则说明 s
的子串和 p
是异位词。但是这样每一次比较的操作时间复杂度是 O ( n ) O(n)