Sobes.tech
Senior

Comment trouver des anagrammes d'un mot dans un dictionnaire?

sobes.tech IA

Réponse de l'IA

Pour trouver des anagrammes d’un mot dans un dictionnaire en Go, vous pouvez utiliser le tri des lettres du mot comme clé. Tous les mots qui, en triant leurs lettres, donnent la même chaîne, sont des anagrammes entre eux.

Exemple:

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’idée est que le tri des lettres normalise le mot, et tous les anagrammes ont la même forme triée.