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".
策略:
在沿着 字符串 s 滑动的过程中,检查从当前位置 i 到前方位置 i-len(p)+1 的 Counter 与 pCounter 的关系:
- 若相等,则将 前方位置 i-len(p)+1 的下标 存入 anagram_list
- 否则,将 前方位置 的字符的 数量 -1, 若该数量 == 0, 则从 sCounter 中删除该 字符