LeetCode49. 字母异位词分组 | 刷题打卡

174 阅读1分钟

一、题目描述

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例:

难度:中等

输入: ["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的值加进空数组里面返回,就得到了我们想要的数据