跳转至

LC438 - 找出字符串中所有字母异位词

FindAllAnagramsInAString.go
package SlidingWindow

func findAnagrams(s string, p string) []int {
    ns, np := len(s), len(p)
    if ns < np {
        return []int{}
    }
    result := []int{}
    var pCount, sCount [26]int
    for i := 0; i < np; i++ {
        pCount[p[i]-'a']++
        sCount[s[i]-'a']++
    }
    if pCount == sCount {
        result = append(result, 0)
    }
    for i := np; i < ns; i++ {
        sCount[s[i]-'a']++
        sCount[s[i-np]-'a']--
        if pCount == sCount {
            result = append(result, i-np+1)
        }
    }
    return result
}