49.字母异位词分组

字母异位词分组

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

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

示例 1:

输入:strs = [“eat”,”tea”,”tan”,”ate”,”nat”,”bat”]
输出:[[“bat”],[“nat”,”tan”],[“ate”,”eat”,”tea”]]

示例 2:

输入:strs = [“”]
输出:[[“”]]

示例 3:

输入:strs = [“a”]
输出:[[“a”]]

提示:

  • 1 <= strs.length <= $10^4$
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写英文字母

解析

将每个字符串排序后作为 key,异位词排序后一定相同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function (strs) {
const map = new Map();

for (const str of strs) {
const key = str.split("").sort().join("");
if (!map.has(key)) {
map.set(key, []);
}
map.get(key).push(str);
}

return Array.from(map.values());
};

排序后作为哈希键是最直观的方法。时间复杂度 O(n * k * logk),其中 k 是字符串最大长度。


49.字母异位词分组
https://leetcode.lz5z.com/49.group-anagrams/
作者
tickli
发布于
2023年10月10日
许可协议