JS_LeetCode02:字母异位词分组

image-20250511223901954

2.字母异位词分组

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

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

哈希表

字母异位词的共同点是它包括的字母是相同的,将字母进行排序后得到的字符串是相同的。

因此,考虑将排序后的字符串作为键,值就是所有对应的异位词。

使用for循环遍历每一个字符串,对其字母进行排序,如果键已存在,则将字符串加入键对应的值数组。否则,新建一个键,保存该字符串。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function(strs) {
const map = {} // 存放分组结果
for (const str of strs){
const key = str.trim().split('').sort().join('')
if (!map[key]){
map[key] = []
}
map[key].push(str)
}
return Object.values(map)
};