49. Group Anagrams

Leetcode link

题目简介

/**
 * @param {string[]} strs
 * @return {string[][]}
 */

题目给我们一个字符串数组,要求我们在数组中找到相同字符但是不同排列顺序的字符串,并将他们放在同一个数组中返回

解题思路

相同字符但是不同排列顺序的字符串的特性:排序后字符串相等

我们可以用如上特性,构建一个 mapping:

  • key 是排序后的字符串
  • value 是原始字符串组成的数组

接下来我们遍历 strs,我们把排序后相同的字符串都放到同一个 key 的 value 中

最后我们返回所有 value 组成的数组即可

Javascript

/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function(strs) {
    const map = new Map()
    const compare = (a, b) => a.charCodeAt(0) - b.charCodeAt(0)
    const res = []

    for(const str of strs) {
        const newStr = str.split('').sort(compare).join('')
        if(!map.has(newStr)) {
            map.set(newStr, [])
        }
        map.get(newStr).push(str)
    }

    return Array.from(map.values())
};

results matching ""

    No results matching ""