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

Η ιδέα είναι ότι η ταξινόμηση των γραμμάτων κανονικοποιεί τη λέξη, και όλοι οι αναγραμματισμοί έχουν την ίδια ταξινομημένη μορφή.