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]
}
Η ιδέα είναι ότι η ταξινόμηση των γραμμάτων κανονικοποιεί τη λέξη, και όλοι οι αναγραμματισμοί έχουν την ίδια ταξινομημένη μορφή.