49.字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
这题也是使用 map。
我们只需要建立一个 map 的映射,然后再遍历这个 map 即可。
思路就是我们可以遍历的时候将每一个值按照字母的 ASCII 码排序,这样的话只要是符合字母异位词的单词都会被排列成同一个字母,然后我们将这个字母放在这个映射里面,所以也就是只要这个字母按照 ASCII 排序出的单词相同,就会被放在同一个映射里面,后续我们只要再次遍历这个映射就可以了。
比如题目给的例子,就可以在遍历之后形成这个样的 map:
/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function(strs) {
let map = new Map()
for(let i = 0; i < strs.length; i++) {
let temp = strs[i].split("").sort().join("")
console.log(temp)
if(map.has(temp)) {
map.get(temp).push(strs[i])
} else {
map.set(temp, [strs[i]])
}
}
// 这个时候就会形成一个 map,map 中记录好了分组
// 所以我们只需要遍历 map 即可
let res = []
for(const [key, value] of map) {
res.push(value)
}
return res
};