跳到主要内容

group-anagrams

https://leetcode.cn/problems/group-anagrams/description/

function groupAnagrams(strs: string[]): string[][] {
// 创建一个 Map 来存储排序后的字符串作为键,原始字符串数组作为值
const anagramMap = new Map<string, string[]>();

// 遍历输入的字符串数组
for (const str of strs) {
// 将当前字符串排序,用作 Map 的键
const sortedStr = str.split('').sort().join('');

// 如果 Map 中不存在该键,则创建一个新的空数组
if (!anagramMap.has(sortedStr)) {
anagramMap.set(sortedStr, []);
}

// 将原始字符串添加到对应的数组中
anagramMap.get(sortedStr)!.push(str);
}

// 返回 Map 中所有的值,即分组后的字谜数组
return Array.from(anagramMap.values());
}

// 时间复杂度:O(n * k * log(k)),其中 n 是字符串数量,k 是最长字符串的长度
// 空间复杂度:O(n * k),用于存储 Map 中的所有字符串