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

1.6 KiB

layout, title, last_solved, category, leetcode_url, status
layout title last_solved category leetcode_url status
page Find All Anagrams in a String sliding window https://leetcode.com/problems/find-all-anagrams-in-a-string 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