Sobes.tech
Senior

Сөздүн анаграммаларын сөздүктө кантип табуу керек?

sobes.tech AI

AIден жооп

Go тилинде сөздүктө сөздүн анаграммаларын табуу үчүн, сиз сөздүн тамгаларын сорттоо ачкычы катары колдонушуңуз мүмкүн. Бардык сөздөр, алардын тамгалары сорттолгондо бирдей сапты түзсө, бири-биринин анаграммдары болот.

Мисал:

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

Идея — тамгаларды сорттоо сөздү нормалдаштырат, жана бардык анаграммалар бирдей сорттолгон формага ээ болот.