一、题目描述
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例:
难度:中等
输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[ ["ate","eat","tea"], ["nat","tan"], ["bat"] ]
说明: 所有输入均为小写字母。 不考虑答案输出的顺序。
二、思路分析
可以利用ES6
新增的Map
来完成,Map
的数据具有唯一性,将字母排序,如果在Map
中不存在,则将排序后的字母加进Map
中
三、AC代码
var groupAnagrams = function (strs) {
let map = new Map();
for (let i = 0; i < strs.length; i++) {
let temp = strs[i].split('').sort().join('');
if(map.get(temp)) {
map.get(temp).push(strs[i])
} else {
map.set(temp, [strs[i]])
}
}
return [...map.values()];
};
四、总结
Map
存储的数据是这样的:
再用扩展运算符把Map
的值加进空数组里面返回,就得到了我们想要的数据