LeetCode/go/count-vowel-strings-in-ranges.go

39 lines
707 B
Go
Raw Normal View History

package main
import "slices"
func vowelStrings(words []string, queries [][]int) []int {
isVowel := func(c byte) bool {
return slices.Contains([]byte{'a', 'e', 'i', 'o', 'u'}, c)
}
makePrefixCount := func() []int {
prefixCount := make([]int, len(words))
count := 0
for i, word := range words {
if isVowel(word[0]) && isVowel(word[len(word)-1]) {
count++
}
prefixCount[i] = count
}
return prefixCount
}
prefixCount := makePrefixCount()
answer := make([]int, len(queries))
for i, query := range queries {
till := prefixCount[query[1]]
preceding := 0
if query[0] != 0 {
preceding = prefixCount[query[0]-1]
}
answer[i] = till - preceding
}
return answer
}