49 字母异位词分组

本文最后更新于:2021年1月20日 中午

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

示例:

1
2
3
4
5
6
7
输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]

说明:

  • 所有输入均为小写字母。
  • 不考虑答案输出的顺序。

Solution

参考 @zrita

  • 先遍历strs,对每个string进行排序,异位词的排序结果是一样的,在map中的key值也就一样,然后在map中添加对应的vector,再将vector逐个添加到res中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// @lc code=start
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> res;
unordered_map<string, vector<string>> mp;
for(string& str: strs){
string key = str;
sort(key.begin(), key.end());
mp[key].push_back(str);
}
for(auto& m: mp)
res.push_back(m.second);
return res;
}
};
// @lc code=end

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!