1. 思路
如何将异位词hash到同一个值是我们需要解决的问题,有很多种方法,排序、算每个字符出现的个数等。
这里我们选择排序,异位词经过排序后的是一样的。再利用Map将异位词映射到一个数组中。
2. 代码
class Solution {
public:
map<string, vector<string>> mpt;
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> ans;
if(strs.size() == 0) return ans;
for(int i = 0; i < strs.size(); ++i)
{
string temp = strs[i];
sort(temp.begin(), temp.end());
mpt[temp].push_back(strs[i]);
}
for(auto& kv : mpt)
{
ans.push_back(kv.second);
}
return ans;
}
};