给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
提示:
思路:
/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function(strs) {
const strMap = new Map( );
strs.forEach(val => {
const newStr = val.split('').sort().join('');
if(strMap.has(newStr)){
strMap.set(newStr,[...strMap.get(newStr),val]);
}else{
strMap.set(newStr,[val]);
}
})
const res = [];
for (const [key,val] of strMap) {
res.push(val);
}
return res;
};
优化
const res = [];
for (const [key,val] of strMap) {
res.push(val);
}
return res;
利用map的values()方法,可以简化为
return Array.from(strMap.values());
字符串–>数组 ('apple' -> ['a', 'p', 'p', 'l', 'e'])
数组 --> 字符串
['a', 'p', 'p', 'l', 'e'] -> 'a,p,p,l,e'['a', 'p', 'p', 'l', 'e'] -> 'apple'['a', 'p', 'p', 'l', 'e'] -> 'a,p,p,l,e'Map 实例的 values() 方法返回一个新的 map 迭代器对象,该对象包含此 map 中每个元素的值,按插入顺序排列。
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");
const mapIter = myMap.values();
console.log(mapIter.next().value); // "foo"
console.log(mapIter.next().value); // "bar"
console.log(mapIter.next().value); // "baz"
console.log(Array.from(myMap.values())); // ["foo", "bar", "baz"]