JSFiddle - React, Tailwind, and code Playground

by Paco86

JavaScript

var findAnagrams = function(s, p) {
    var map = new Map();
    for (var i = 0; i < p.length; i++) {
        map.set(p[i], (map.get(p[i]) || 0) + 1);
    }
    
    var match = 0;
    var res = [];
    var start = 0, end = 0;
    
    while (end < s.length) {debugger
        if (map.has(s[end]) && map.get(s[end]) > 0) {
            match += 1;
        }
        map.set(s[end], (map.get(s[end]) || 0) - 1);
        end += 1; 
        
        if (match === p.length) {
            res.push(start);
        }
        
        if (end - start === p.length) {
            if (map.has(s[start]) && map.get(s[start]) >= 0) {
                match -= 1;
            }
            map.set(s[start], (map.get(s[start]) || 0) + 1);
            start += 1;
        }
    }
    
    return res;
    
};

console.log(findAnagrams("acab", "ab"));