49. Group Anagrams
题目简介
/**
* @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())
};