题目链接:https://leetcode.cn/problems/group-anagrams/
思路如下:
输入:strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
对每个字符串进行排序:strs = [“aet”, “aet”, “ant”, “aet”, “ant”, “abt”]
如果排序后的字符串相同,则将它们归为同一组:[[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
C++代码如下:
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string>> str2vec;
for (auto& str : strs) {
auto tmp = str;
sort(tmp.begin(), tmp.end());
str2vec[tmp].push_back(str);
}
vector<vector<string>> res;
for (auto& item : str2vec) {
res.push_back(item.second);
}
return res;
}
};