javascript
/**
* @param {string} s
* @param {string} p
* @return {number[]}
*/
var findAnagrams = function (s, p) {
const res = [],
map = new Map()
for (let s of p) {
map.set(s, (map.get(s) || 0) + 1)
}
for (let i = 0; i < p.length; i++) {
map.has(s[i]) && map.set(s[i], map.get(s[i]) - 1)
}
for (let i = 0, j = p.length; j <= s.length; i++, j++) {
;[...map.values()].every((v) => v === 0) && res.push(i)
map.has(s[i]) && map.set(s[i], map.get(s[i]) + 1)
map.has(s[j]) && map.set(s[j], map.get(s[j]) - 1)
}
return res
}