LeetCode题解:49. 字母异位词分组,数组计数+哈希表,JavaScript,详细注释

    科技2022-08-10  97

    原题链接:https://leetcode-cn.com/problems/group-anagrams/

    解题思路:

    如果你对这题不熟悉,可以先做242. 有效的字母异位词,以及我的题解LeetCode题解:242. 有效的字母异位词,数组计数,JavaScript,详细注释。

    使用Map保存最终结果,Map中存储的是分组后的异位词数组。使用长度为26的数组对每个字母计数,index值由char.codePointAt(0) - ‘a’.codePointAt(0)计算而来。将计数后的数组转换成字符串,作为Map的key,存储相应的异位词字符串。最后将Map转换为数组形式输出结果即可。 /** * @param {string[]} strs * @return {string[][]} */ var groupAnagrams = function (strs) { let resultMap = new Map(); // 使用Map保存结果 for (const str of strs) { let keyArr = new Array(26).fill(0); // 使用数组统计所有字母的个数 for (const char of str) { // 计算字母与a的码点差值,其差值会在0-25 const index = char.codePointAt(0) - 'a'.codePointAt(0); // 每个字母的相应数量+1 keyArr[index]++; } // 将数组转换成字符串,用于保存相应异位词的结果 const key = JSON.stringify(keyArr); // 将异位词按照对应的key存储到Map中 resultMap.get(key) ? resultMap.get(key).push(str) : resultMap.set(key, [str]); } // 将Map转换为数组并输出结果 return [...resultMap.values()]; };
    Processed: 0.019, SQL: 8