Sobes.tech
Senior

Bir kelimenin anagramlarını sözlükte nasıl bulabilirim?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde bir sözlükte bir kelimenin anagramlarını bulmak için, kelimenin harflerini sıralamayı anahtar olarak kullanabilirsiniz. Sıralandığında aynı diziyi veren tüm kelimeler birbirinin anagramıdır.

Örnek:

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

Fikir, harflerin sıralanmasının kelimeyi normalize ettiği ve tüm anagramların aynı sıralı forma sahip olduğudur.