题目描述

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
解释: 在 strs 中没有字符串可以通过重新排列来形成 “bat”。 字符串 “nat” 和 “tan” 是字母异位词,因为它们可以重新排列以形成彼此。 字符串 “ate”,“eat” 和 “tea” 是字母异位词,因为它们可以重新排列以形成彼此。

示例 2:
输入: strs = [""]
输出: [[""]]

示例 3:
输入: strs = [“a”]
输出: [["a"]]

思路&js代码

1、排序+hash

var groupAnagrams = function(strs) {
    const result = new Map()
    strs.forEach(str => {
        const arr = Array.from(str)
        arr.sort()
        const key = arr.toString()
 
        if(result.has(key)){
            result.get(key).push(str)
        }else{
            result.set(key, [str])
        }
    })
 
    return Array.from(result.values())
};