Cosen95 / js_algorithm

🏂js数据结构与算法 系统学习
36 stars 10 forks source link

字母异位词分组 #24

Open Cosen95 opened 4 years ago

Cosen95 commented 4 years ago

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

Cosen95 commented 4 years ago

题目分析

字母异位词类问题的解题核心是:当且仅当它们的排序字符串相等时,两个字符串就是字母异位词。

针对这道题目,我们可以去维护一个哈希表hash,其中每个键 key 是一个排序字符串,每个值value是初始输入的字符串列表,排序后等于 key

遍历数组,每次去哈希表中比对:

编码实现

/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function(strs) {
    const hash = new Map();

    for (let i = 0;i < strs.length; i++) {
        const str = strs[i].split('').sort().join('')
        if(hash.has(str)) {
            let temp = hash.get(str);
            temp.push(strs[i])
            hash.set(str, temp)
        } else {
            hash.set(str, [strs[i]])
        }
    }

    return [...hash.values()]
};