022_字符异位词分组

知识点:哈希表

LeetCode第四十九题:

另一个解法是将每个字符串按字典序进行排序,然后再结合哈希表进行操作,不过那样的时间复杂度为O(NKlogK),N为字符串个数,K为字符串的长度,KlogK为字符串的排序时间。

语言:GoLang

// 时间复杂度:O(kn),k为最长的字符串的长度,n为总的字符串的数量
func groupAnagrams(strs []string) [][]string {
    length := len(strs)

    mapper := map[[26]int][]string{}
    for i := 0; i < length; i++ {
        feature := [26]int{}
        for j := 0; j < len(strs[i]); j++ {
            feature[strs[i][j] - 'a']++
        }
        mapper[feature] = append(mapper[feature], strs[i])
    }

    result := [][]string{}
    for _, v := range mapper {
        result = append(result, v)
    }
    return result
}
posted @ 2020-03-16 20:01  Cenyol  阅读(72)  评论(0)    收藏  举报