Senior
Hoe vind je anagrammen van een woord in een woordenboek?
sobes.tech AI
Antwoord van AI
Om de anagrammen van een woord in een woordenboek in Go te vinden, kun je de letters van het woord sorteren als sleutel gebruiken. Alle woorden die, wanneer hun letters gesorteerd worden, dezelfde string opleveren, zijn anagrammen van elkaar.
Voorbeeld:
package main
import (
"fmt"
"sort"
"strings"
)
func sortString(s string) string {
chars := strings.Split(s, "")
sort.Strings(chars)
return strings.Join(chars, "")
}
func findAnagrams(word string, dictionary []string) []string {
key := sortString(word)
var anagrams []string
for _, w := range dictionary {
if w != word && sortString(w) == key {
anagrams = append(anagrams, w)
}
}
return anagrams
}
func main() {
dict := []string{"listen", "silent", "enlist", "google", "inlets", "banana"}
word := "listen"
fmt.Println(findAnagrams(word, dict)) // [silent enlist inlets]
}
Het idee is dat het sorteren van de letters het woord normaliseert, en alle anagrammen dezelfde gesorteerde vorm hebben.