Sobes.tech
Senior

Come trovare gli anagrammi di una parola nel dizionario?

sobes.tech AI

Risposta dell'AI

Per trovare gli anagrammi di una parola in un dizionario in Go, puoi usare l'ordinamento delle lettere della parola come chiave. Tutte le parole che, ordinando le loro lettere, danno la stessa stringa, sono anagrammi tra loro.

Esempio:

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]
}

L'idea è che l'ordinamento delle lettere normalizza la parola, e tutti gli anagrammi hanno la stessa forma ordinata.