网站建设开发维护,注册安全工程师考几科,创意品牌型网站,京津冀协同发展的路径主要涉及49. 字母异位词分组
一、题目
给你一个字符串数组#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例
输入: strs [eat, tea, tan, at…49. 字母异位词分组
一、题目
给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例
输入: strs [eat, tea, tan, ate, nat, bat]
输出: [[bat],[nat,tan],[ate,eat,tea]]提示
1 strs.length 1040 strs[i].length 100strs[i] 仅包含小写字母
二、题解
思路
将原始字符串转化为有序字符串字符串-数组split() - 排序sort()-字符串join()遍历字符串数组并将字符串存入map中 (key:有序字符串val:包含原始字符串的数组)
/*** 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])
str.split(‘’)Array.from(str)
数组 -- 字符串
arr.join() 默认逗号分隔 [a, p, p, l, e] - a,p,p,l,earr.join(‘’) [a, p, p, l, e] - applearr.toString()默认逗号分隔 [a, p, p, l, e] - a,p,p,l,e
Map的 values()方法
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); // bazconsole.log(Array.from(myMap.values())); // [foo, bar, baz]