438. Find All Anagrams in a String
Problem description:
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:
Question to ask:
- what is anagram? size would be the same?
The idea is using fixed size sliding window, the size is len(p)
An anagram is frequency of each character should be same in two strings.
1 | class Solution: |
1 | class Solution { |
time complexity: $O(n)$
reference:
https://goo.gl/5yadmE
https://goo.gl/8XAyZH
https://goo.gl/gT32uu