Skip to content

Code:

js
/**
 * @param {string} s
 * @param {string} p
 * @return {number[]}
 */
var findAnagrams = function (s, p) {
    const result = []
    const window = Array(26).fill(0)
    let window1 = Array(26).fill(0)

    for (const pp of p) {
        window1[pp.charCodeAt() - 97]++
    }

    const isSame = (a, b) => {
        for (let i = 0; i < 26; i++) {
            if (a[i] !== b[i]) return false
        }
        return true
    }

    for (let i = 0; i < s.length; i++) {
        window[s[i].charCodeAt() - 97]++

        if (i < p.length - 1) {
            continue
        }


        if (isSame(window, window1)) {
            result.push(i - p.length + 1)
        }

        window[s[i - p.length + 1].charCodeAt() - 97]--
    }

    return result
};

console.log(findAnagrams('abab', 'ab'))
console.log(findAnagrams('cbaebabacd', 'abc'))
console.log(findAnagrams('baa', 'aa'))

❤ With Algorithm