Задачи на мапы
1) Написать метод, на вход которого приходит список слов, на выходе нужно вернуть список слов с подсписками, где каждый подсписок содержит слова - анаграммы (одинаковые слова с учетом перестановки символов).
Пояснение решения
Код
package main
import (
"fmt"
"sort"
"strings"
)
// Функция для сортировки символов в строке
func sortString(s string) string {
runes := []rune(s)
sort.Slice(runes, func(i, j int) bool {
return runes[i] < runes[j]
})
return string(runes)
}
// Функция для группировки анаграмм
func groupAnagrams(words []string) [][]string {
anagramMap := make(map[string][]string)
for _, word := range words {
sortedWord := sortString(word)
anagramMap[sortedWord] = append(anagramMap[sortedWord], word)
}
var result [][]string
for _, anagrams := range anagramMap {
result = append(result, anagrams)
}
return result
}
func main() {
words := []string{"listen", "silent", "enlist", "inlets", "google", "gogole", "cat", "act", "tac"}
anagramGroups := groupAnagrams(words)
for _, group := range anagramGroups {
fmt.Println(strings.Join(group, ", "))
}
}Объяснение кода
Заключение
Last updated