Leetcode # 438. Find All Anagrams in a String
- 2023.08.05
- ★★ Medium Hash Table LeetCode Sliding Window
https://leetcode.com/problems/find-all-anagrams-in-a-string
Solution: Sliding Window with HashMap
Time Complexity: O(len(s))
Space Complexity: O(len(p))
(The input and output generally do not count towards the space complexity.)
class Solution:
def findAnagrams(self, s: str, p: str) -> List[int]:
result = []
if len(s) < len(p): return result
target, counter = collections.Counter(), collections.Counter()
for i in range(len(p)):
target[p[i]] += 1
counter[s[i]] += 1
for i in range(len(s) - len(p) + 1):
if all(counter[c] == target[c] for c in target):
result.append(i)
if i == len(s) - len(p): break
counter[s[i + len(p)]] += 1
counter[s[i]] -= 1
return result
Last Updated on 2023/08/16 by A1go