Sobes.tech
Senior

Kaip rasti žodžio anagramas žodyne?

sobes.tech AI

Atsakymas iš AI

Norėdami rasti žodžio anagramas žodyne Go kalba, galite naudoti žodžio raidžių rūšiavimą kaip raktą. Visi žodžiai, kurie rūšiuojant jų raides duoda tą patį eilutę, yra tarpusavyje anagramai.

Pavyzdys:

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

Idėja ta, kad raidžių rūšiavimas normalizuoja žodį, ir visi anagramai turi tą pačią rūšiuotą formą.