跳到主要内容

面试题10.02.变位词组

链接:面试题10.02.变位词组
难度:Medium
标签:数组、哈希表、字符串、排序
简介:编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。

题解 1 - typescript

  • 编辑时间:2021-07-19
  • 执行用时:240ms
  • 内存消耗:50.6MB
  • 编程语言:typescript
  • 解法介绍:哈希储存。
function groupAnagrams(strs: string[]): string[][] {
const map: Record<string, string[]> = {};
const getKey = (str: string) => {
const cache: Record<string, number> = {};
for (const c of str) cache[c] = (cache[c] ?? 0) + 1;
return Object.entries(cache)
.sort(([k1], [k2]) => k1.codePointAt(0)! - k2.codePointAt(0)!)
.map(([k, v]) => k + v)
.join(':');
};
for (const str of strs) {
const key = getKey(str);
let arr = map[key];
if (!arr) map[key] = arr = [];
arr.push(str);
}
return Object.values(map);
}