Sobes.tech
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.