1、题目:
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
2、解题思路
由于存在字母异位词,所以必有一些字符串排序完后是一样的,所以先对字符串进行排序,然后将排序好的字符串作为键,然后将原字符串作为值放入哈希表中。
3、代码
class Solution
{
public:
vector<vector<string>> groupAnagrams(vector<string>& strs)
{
unordered_map<string,vector<string>>hash;
for(auto&str:strs)
{
auto s = str;
sort(begin(s),end(s));
hash[s].push_back(str);
}
vector<vector<string>>ans;
for(auto elem : hash)
{
ans.push_back(elem.second);
}
// for(auto&[_,v]:hash)
// ans.push_back(v);
return ans;
}
};