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]
}
Идея — тамгаларды сорттоо сөздү нормалдаштырат, жана бардык анаграммалар бирдей сорттолгон формага ээ болот.