给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
/**
* @param {string[]} strs
* @return {string[][]}
*/
思路:首先将 每一个字符串排序 然后相同的 创建一个map key为排序后的字符串,value为数组,为排序前的字符串合集。每次遍历,如果排序后的字符串在 map中,那么就将这个字符串添加到value的数组中,如果未找到,就创建一个新的数组,并将排序前的字符串添加进去
var groupAnagrams = function(strs) {
// 创建一个map
const map = new Map()
for(let str of strs) { // 遍历strs的值
let array = str.split('').sort().join('')
// 将字符串转换成字符数组,排序,再转换成字符串数组
let key = array.toString() // 将排序后的字符串 赋值给 key
let list = map.get(key) ? map.get(key) :new Array()
// 如果map里面有key这个键值对,就将这个键值对的值赋给list
// 如果没有,就重新创建一个数组
list.push(str)
// 更新list数组,将str压入数组末尾
map.set(key,list)
// 如果多次设置相同的key,会覆盖之前的
}
return Array.from(map.values())
// 用Array.from() 方法可以使map,set,字符串等转换成数组格式
// map.values() 得到map的值 数组
};