leetcode_gym/_problems/findAllAnagramsInString.md
2026-08-25 19:14:07 -06:00

85 lines
1.6 KiB
Markdown

---
layout: page
title: Find All Anagrams in a String
last_solved:
category: sliding window
leetcode_url: https://leetcode.com/problems/find-all-anagrams-in-a-string
status: Attempted
---
Problem
-------
```
Given a string s and a non-empty string p, find all the start indices of p's anagrams in s.
Strings consists of lowercase English letters only and the length of both strings s and p will not be larger than 20,100.
The order of output does not matter.
Example 1:
Input:
s: "cbaebabacd" p: "abc"
Output:
[0, 6]
Explanation:
The substring with start index = 0 is "cba", which is an anagram of "abc".
The substring with start index = 6 is "bac", which is an anagram of "abc".
Example 2:
Input:
s: "abab" p: "ab"
Output:
[0, 1, 2]
Explanation:
The substring with start index = 0 is "ab", which is an anagram of "ab".
The substring with start index = 1 is "ba", which is an anagram of "ab".
The substring with start index = 2 is "ab", which is an anagram of "ab".
```
Solution
----------
Initially did this, but TLE
TC is n*nlogn
sort is expensive
{% highlight python %}
def findAnagrams(self, s: str, p: str) -> List[int]:
if not s: return []
length = len(p)
output = []
for i in range(len(s)-length+1):
# sliding window of s
window = s[i:i+length]
if sorted(window)==sorted(p):
output.append(i)
return output
{% endhighlight %}
______________
{% highlight python %}
{% endhighlight %}
![image1]()