var findAnagrams = function (s, p) {
if (p.length > s.length) return [];
const output = [];
const map = new Map();
for (let i = 0; i < p.length; i++) {
const character = p[i];
if (map.has(character)) {
map.set(character, map.get(character) + 1);
} else {
map.set(character, 1);
}
}
for (let i = 0; i <= s.length - p.length; i++) {
if (output[output.length - 1] === i - 1 && s[i - 1] === s[i + p.length - 1]) {
output.push(i);
continue;
}
const newMap = new Map(map);
for (let j = i + p.length - 1; j >= i; j--) {
const character = s[j];
if (!newMap.has(character)) {
i = j;
break;
} else if (newMap.get(character) !== 1) {
newMap.set(character, newMap.get(character) - 1);
} else {
newMap.delete(character);
}
}
if (!newMap.size) {
output.push(i);
}
}
return output;
};
console.log(findAnagrams("cbaebabacd", "abc"));