LeetCode49:字母异位词分组

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:

所有输入均为小写字母。
不考虑答案输出的顺序。
通过次数83,266提交次数133,827

对每个string做循环,记录里面每种字母的数量,然后加入到map中,最后map中相同键值的就是异位词。

 1 class Solution {
 2 public:
 3 vector<vector<string>> groupAnagrams(vector<string> &strs)
 4 {
 5     int n = strs.size();
 6     if (!n)
 7         return {};
 8     unordered_map<string, vector<string>> m;
 9     for (int i = 0; i < n; i++)
10     {
11         string count = "00000000000000000000000000";
12         for (int k = 0; k < strs[i].size(); k++)
13             count[strs[i][k] - 'a'] += 1;
14         //else
15         m[count].push_back(strs[i]);
16     }
17     vector<vector<string>> ret;
18     vector<string> temp;
19     for(auto it=m.begin();it!=m.end();it++)
20         ret.push_back(it->second);
21     
22     return ret;
23     }
24 };

猜你喜欢

转载自www.cnblogs.com/rookiez/p/13210075.html