字謎分組 go實現
阿新 • • 發佈:2018-12-06
給定一個字串陣列,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字串。
示例:
輸入: ["eat", "tea", "tan", "ate", "nat", "bat"],
輸出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
說明:
所有輸入均為小寫字母。
不考慮答案輸出的順序。
type SortByte []byte func (a SortByte) Len() int { return len(a) } func (a SortByte) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func (a SortByte) Less(i, j int) bool { return a[i] < a[j] } func groupAnagrams(strs []string) (r [][]string) { km := make(map[string]int) i := 0 for _, v := range strs { va := []byte(v) sort.Sort(SortByte(va)) k := string(va) if kl, ok := km[k]; !ok { km[k] = i r = append(r, []string{v}) i++ } else { r[kl] = append(r[kl], v); } } return r }