题目
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs =["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]示例 2:
输入: strs =[""]
输出: [[""]]示例 3:
输入: strs =["a"]
输出: [["a"]]
题解
看了解析才做出来的,不得不说解法真的很精巧
先定义一个自定义函数,把传入的字符串先用split('')拆分成字母数组,然后用sort()排序字母,然后用join('')把字母数组还原成字符串
然后遍历题目给定的数组,分别传入函数中获得新字符串,与map比较,如果map中存在新字符串则把遍历的这个字符串加进去,如果不存在则创建map的新键值对
/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function(strs) {
function getkey(str)
{
return str.split('').sort().join('');
}
var map = new Map();
for(var i of strs)
{
var ii = getkey(i);
if(map.get(ii))
{
map.get(ii).push(i);
}
else{
map.set(ii,[i]);
}
}
return [...map.values()];
};
知识点
在for循环中,i of strs代表的是遍历数组中的元素,i in strs的i代表的是索引值,如果是在对象中i in strs的i代表的是属性名
[...×××]代表的是,用通俗的话来说把衣服脱了,不管是大括号([])、花括号({}),统统不在话下,全部脱掉脱掉!