leetcode 49题 字母异味词分组 C++实现
一、题目介绍
二、思路/代码
由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。利用unordered_map不会对数据进行排序并且重复关键字进行删除的特性,可以把每一个string进行排序并且使之成为一个key,然后依次遍历,而value则是一个string类型的一维数组,从而把字母异位词组合到一个value中,最后输出具体代码如下所示:
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string>> mp;
for (string& str: strs) {
string key = str;
sort(key.begin(), key.end());
mp[key].emplace_back(str);
}
vector<vector<string>> ans;
for (auto it = mp.begin(); it != mp.end(); ++it) {
ans.emplace_back(it->second);
}
return ans;
}
};
``