问题描述:
- 给定一个字符串数组
strs
,将变位词组合在一起,按任意顺序返回结果列表。
- 若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。
核心思路:
- 该题比较简单,出现对字符串中字符频数的相关题目,不是计数就是排序(排序结果相等说明频数也相等)。
- 将每个字符进行排序,并将排序前后的结果进行映射,并存放到哈希表中即可,
代码实现:
class Solution
{
public:
vector<vector<string>> groupAnagrams(vector<string>& strs)
{
unordered_map<string, vector<string>> mapped;
for(auto& str : strs)
{
string tmp = str;
sort(tmp.begin(), tmp.end());
mapped[tmp].emplace_back(str);
}
vector<vector<string>> ans;
for(auto& [_, vec] : mapped)
ans.emplace_back(vec);
return ans;
}
};