「每日LeetCode」2021年7月18日

本文最后更新于:2023年3月19日 晚上

面试题 10.02. 变位词组

面试题 10.02. 变位词组

编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。
注意:本题相对原题稍作修改
示例:

1
2
3
4
5
6
7
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]

说明:

  • 所有输入均为小写字母。
  • 不考虑答案输出的顺序。

思路

遍历字符串,对当前字符串 sort 后,如果都是一样的元素就会产生相同的 key,用哈希表存起来,最后返回即可。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
@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.get(key).push(str);
else map.set(key, [str]);
}
return [...map.values()];
};