题目
Leetcode 49. 字母异位词分组
代码(首刷看思路)
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
function<string(string)> encode = [&](string s) {
vector<char> count(26, 0);
for(char& c : s) {
count[c - 'a']++;
}
string ans(count.begin(), count.end());
return ans;
};
unordered_map<string, vector<string>> mp;
for(auto& s : strs) {
string ans = encode(s);
mp[ans].push_back(s);
}
vector<vector<string>> res;
for(auto& m : mp) {
res.push_back(m.second);
}
return res;
}
};
代码(10.3 二刷看解析)
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
auto encode = [](string s) {
vector<char> v(26);
for(char& c : s) {
v[c-'a']++;
}
string ans(v.begin(), v.end());
return ans;
};
unordered_map<string, vector<string>> mp;
vector<vector<string>> res;
for(string& s : strs) {
auto ans = encode(s);
mp[ans].emplace_back(s);
}
for(auto& kv : mp) {
res.emplace_back(kv.second);
}
return res;
}
};