字母异位词分组
要点:Map对象,用于存储 键-值(key-values)对,在这道题中,键是排序后的字符串,值是原始字符串的列表;
- 循环遍历输入的字符串数组
strs; - 对于每个字符串,首先将其转换成字符数组
array; - 使用
sort方法进行排序; - 将排序后的数组转为字符串,并作为
key(Map的键); - 使用
map.get(key)检查Map中是否已经有了这个键对应的值; - 如果不存在,就创建一个新的数组list;
list是一个数组,将当前字符串str添加到list中;- 将更新后的
list设置回Map对象中,键为key; - 循环结束后,使用
Array.from(map.values())将Map对象中的所有值(即分组后的变位词列表)转换成一个数组,并返回这个数组。
var groupAnagrams = function(strs) {
let map = new Map();
for(let str of strs){
let array = Array.from(str);
array.sort();
let key = array.toString();
let list = map.get(key) ? map.get(key) : new Array();
/** 将上一行代码分成两部分,更好理解。
let list = map.get(key);
if (!list) {
list = new Array();
}
*/
list.push(str);
map.set(key, list);
}
return Array.from(map.values());
};