lc-go/solutions/22/q2273/solution.go

38 lines
671 B
Go

// Package q2273 implements a solution for https://leetcode.com/problems/find-resultant-array-after-removing-anagrams/
package q2273
var buf = [26]int{}
var bufZ = [26]int{}
func isAnagram(a, b string) bool {
if len(a) != len(b) {
return false
}
seen := buf[:]
copy(seen, bufZ[:])
for i := range len(a) {
c := a[i] - 'a'
seen[c]++
}
for i := range len(b) {
c := b[i] - 'a'
seen[c]--
if seen[c] < 0 {
return false
}
}
return true
}
func removeAnagrams(words []string) []string {
p := 0
for i := 1; i < len(words); i++ {
if !isAnagram(words[p], words[i]) {
p++
words[p] = words[i]
}
}
return words[:p+1]
}
var _ = removeAnagrams