20.12.14 leetcode49
题目链接:https://leetcode-cn.com/problems/group-anagrams/
题意:给你一个字符串数组,要求将包含字母相同的字符串组合在一起。
分析:一开始我想的是模拟二进制,每个字母代表一个二进制位,一个字符串可以唯一的用一个整数来表示,但我忘了这题字符串中的字母可以重复。。。。。
题解的第二个方法一堆函数没见过,懒得看,直接用第一个排序了。
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;
}
};
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; } };