字母异位词分组
Category | Difficulty | Likes | Dislikes |
---|---|---|---|
algorithms | Medium (57.79%) | 177 | - |
Tags
Companies
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:
- 所有输入均为小写字母。
- 不考虑答案输出的顺序。
1
很明显使用map
做一个映射就可以了
主要是我们要思考映射逻辑
比如
最简单的我们把每个字符串排序
那么排序后的字符串作为key
/*
* @lc app=leetcode.cn id=49 lang=javascript
*
* [49] 字母异位词分组
*/
/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function (strs) {
let map = new Map()
for (const str of strs) {
let key = str.split('').sort().join()
if (!map.has(key)) {
map.set(key, [str])
} else {
map.get(key).push(str)
}
}
return [...map.values()]
};
上面这种方法是建立在被排序的字符串比较短
如果字符串过长
我们就要换一做映射方式
比如使用字符串向量
这里就懒得写了