123456789101112131415161718192021222324 |
- func findAnagrams(s string, p string) (res []int) {
- freq, curr := make([]int, 256), make([]int, 256)
- for _, r := range p {
- freq[r]++
- }
- m, n := len(s), len(p)
- ss := []rune(s)
- for i := 0; i < m; i++ {
- curr[ss[i]]++
- if n-1 <= i {
- same := true
- for j := 'a'; j <= 'z'; j++ {
- if freq[j] != curr[j] {
- same = false
- }
- }
- if same {
- res = append(res, i-n+1)
- }
- curr[ss[i-n+1]]--
- }
- }
- return
- }
|