Group Anagrams go语言实现

2018-09-22  本文已影响0人  fjxCode

Group Anagrams

题目描述

Given an array of strings, group anagrams together.

Example:

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]
Note:

All inputs will be in lowercase.
The order of your output does not matter.

思路:

细节:

解:

package main

import "sort"

func groupAnagrams(strs []string) [][]string {
    var hashmap map[string][]string
    hashmap = make(map[string][]string)
    for _,elem := range strs {
        elemSorted := stringSort(elem)
        //use append to avoid "contains()" and make()
        hashmap[elemSorted] = append(hashmap[elemSorted],elem)
    }

    var res [][]string
    for _,value := range hashmap {
        res = append(res,value)
    }
    return res
}

//go用sort内置包实现字串排序的方法
func stringSort(s string) string {
    sArr := []rune(s)
    sort.Sort(RuneSlice(sArr))
    return string(sArr)

}
type RuneSlice []rune

func (rs RuneSlice)Len() int {
    return len(rs)
}
func (rs RuneSlice)Less(i,j int) bool {
    return rs[i] < rs[j]
}
func (rs RuneSlice)Swap(i,j int)  {
    rs[i],rs[j] = rs[j],rs[i]
}
上一篇 下一篇

猜你喜欢

热点阅读