diff --git a/Hash/zimuyicifenzu/main.go b/Hash/zimuyicifenzu/main.go new file mode 100644 index 0000000..0c06d18 --- /dev/null +++ b/Hash/zimuyicifenzu/main.go @@ -0,0 +1,36 @@ +package main + +import ( + "fmt" + "sort" +) + +func main() { + fmt.Println(groupAnagrams([]string{"a"})) +} + +func groupAnagrams(strs []string) [][]string { + hash := make(map[string][]int) + result := make([][]string, 0) + for value, str := range strs { + runes := []rune(str) + sort.Slice(runes, func(i, j int) bool { + return runes[i] < runes[j] + }) + if _, ok := hash[string(runes)]; ok { + hash[string(runes)] = append(hash[string(runes)], value) + } else { + hash[string(runes)] = make([]int, 0) + hash[string(runes)] = append(hash[string(runes)], value) + } + } + for _, value := range hash { + tmp := make([]string, 0) + for _, value := range value { + tmp = append(tmp, strs[value]) + } + result = append(result, tmp) + } + return result + +}