49. Group Anagrams

Group Anagrams

题目描述:

Given an array of strings strs, group the anagrams together. You can return the answer in any order.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

Example 1:

Input: strs = [“eat”,”tea”,”tan”,”ate”,”nat”,”bat”]
Output: [[“bat”],[“nat”,”tan”],[“ate”,”eat”,”tea”]]
Example 2:

Input: strs = [“”]
Output: [[“”]]
Example 3:

Input: strs = [“a”]
Output: [[“a”]]

Constraints:

1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] consists of lowercase English letters.

思路:

使用哈希表,之后把哈希表连接成数字

代码:

func groupAnagrams(strs []string) [][]string {
    var res [][]string
    if len(strs) <= 1{
        res = append(res, strs)
        return res
    }
    mp := make(map[int64][]string, 0)
    var num int64
    for _,v := range strs{
        freq := make([]int64, 27)
        for i:=0;i<len(v);i++{
            freq[v[i]-'a']++
        }
        for i:=0;i<26;i++{
            num = num*10 +freq[i]
        }
        mp[num] = append(mp[num], v)
        num = 0
    }
    for _,v := range mp{
        res = append(res, v)
    }
    return res
}

代码效率:

执行用时:12 ms, 在所有 Go 提交中击败了99.78%的用户
内存消耗:7 MB, 在所有 Go 提交中击败了98.23%的用户


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!