1def find_anagrams(s, p):
2 res = []
3 if len(p) > len(s): return res
4 pc = {}; sc = {}
5 for char in p: pc[char] = pc.get(char, 0) + 1
6 for i in range(len(p)): sc[s[i]] = sc.get(s[i], 0) + 1
7 if sc == pc: res.append(0)
8 left = 0
9 for right in range(len(p), len(s)):
10 sc[s[right]] = sc.get(s[right], 0) + 1
11 sc[s[left]] -= 1
12 if sc[s[left]] == 0: del sc[s[left]]
13 left += 1
14 if sc == pc: res.append(left)
15 return res