Skip to content

📚 9.字符异位词分组

💻 代码实现

typescript
/**
 * @url https://leetcode.cn/problems/group-anagrams/description/?envType=study-plan-v2&envId=top-100-liked
 */

// ps:map的key用charcode拼接为字符串的值来区分
/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function (strs) {
    const map = new Map()
    for (let i = 0; i < strs.length; i++) {
        const charArray = new Array(26).fill(0)
        // 遍历每个字符串
        for (let j = 0; j < strs[i].length; j++) {
            const diff = strs[i][j].charCodeAt(0) - 'a'.charCodeAt(0)
            charArray[diff]++
        }
        const charStr = charArray.join('-') // 这里的key注意有区分度
        if (map.has(charStr)) {
            const val = map.get(charStr)
            val.unshift(strs[i])
            map.set(charStr, val)
        } else {
            const res = []
            res.push(strs[i])
            map.set(charStr, res)
        }
    }
    return Array.from(map.values())
};

let strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
console.log('groupAnagrams(strs)', groupAnagrams(strs))

const set = new Set()
set.add('hello word')
set.add('hello word1')
set.add('hello word2')
set.add('hello word3')

Released under the MIT License.