leetcode_group_anagrams

难度:Meidum

将字母映射到长度为26的数组上,每一位表示出现的次数。如果是相同字母异序词,则映射出的数组一致。该数组用字符串表示出来会更方便。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> ret;
unordered_map<string,vector<string>> m;
for(int i = 0; i < strs.size(); i++)
{
string s(26,'0');
string cur_s = strs[i];
for(int j = 0; j < cur_s.size(); j++)
{
char c = cur_s[j];
s[c-'a']++;
}
m[s].push_back(cur_s);
}
for(auto &entry:m)
{
ret.push_back(entry.second);
}
return ret;
}
};