| 1234567891011121314151617181920212223242526272829303132333435 | 
							- package main
 
- import (
 
- 	"sort"
 
- )
 
- // RuneSlice implements sort.Interface
 
- type RuneSlice []rune
 
- func (p RuneSlice) Len() int           { return len(p) }
 
- func (p RuneSlice) Less(i, j int) bool { return p[i] < p[j] }
 
- func (p RuneSlice) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }
 
- func groupAnagrams(strs []string) (res [][]string) {
 
- 	// sorted str : index
 
- 	m := map[string]int{}
 
- 	for _, v := range strs {
 
- 		runes := []rune(v)
 
- 		sort.Sort(RuneSlice(runes))
 
- 		if idx, ok := m[string(runes)]; !ok {
 
- 			m[string(runes)] = len(m)
 
- 			res = append(res, []string{v})
 
- 		} else {
 
- 			res[idx] = append(res[idx], v)
 
- 		}
 
- 	}
 
- 	return res
 
- }
 
- /* func main() {
 
- 	a1 := []string{"eat", "tea", "tan", "ate", "nat", "bat"}
 
- 	fmt.Println(groupAnagrams(a1))
 
- 	a2 := []string{}
 
- 	fmt.Println(groupAnagrams(a2))
 
- } */
 
 
  |