题目
解决方法:排序+哈希表
对字符串排序来判断两个字符串是否位字母异位词,使用哈希表来存储每一组字母异位词,哈希表的键位一组字母异位词的标志(一组词排序后的字符串),哈希表的值为一组字母异位词的列表。
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string>> imap;
for (string &str:strs) {
string key = str;
sort(key.begin(), key.end());
imap[key].emplace_back(str); // 根据标志将字符串放入响应列表
}
vector<vector<string>> ans;
for (auto it = imap.begin(); it != imap.end(); ++it) {
ans.emplace_back(it->second);
}
return ans;
}
};