解题思路:
unordered_map<string,vector<string>>map;
unordered_map<string,string>map;
这两个的区别是一个只能存储单一的string类型 一个可以存储一个字符型容器
一个只能覆盖。
所以这个设置一个这样的map容器,然后将strs中的字符串先排序 排完之后放入map中,这样map中的键对应的是一个排序好的字符串,map中的值对应的
是一个原始的字符串,是一堆字符串,因为map的键不可以重复但是值可以重复。然后设置一个二维动态数组容器,将map中的值放入容器中。
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string,vector<string>>map;
for(string & s : strs){
string sorted_s = s;
sort(sorted_s.begin(),sorted_s.end());
map[sorted_s].push_back(s);
}
vector<vector<string>>ans;
ans.reserve(map.size());
for(auto it = map.begin();it != map.end();it++){
ans.emplace_back(it->second);
}
return ans;
}
};