面试题 10.02 变位数组
题目描述
编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。
解题思路
本题采用的是map函数求解,map函数的key就是一个长度为26的字符串,该字符串是统计单词中每个字符出现的次数,key值一样的字符串归为一个value数组中,最后将所有的value数组放到一个数组里面,就为所求的结果。
解题过程
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> ans;
unordered_map<string,vector<string>> m;
for(string s:strs)
{
string temp('0',26);
for(int i=0;i<s.size();i++)
{
temp[s[i]-'a']++;
}
m[temp].push_back(s);
}
for(auto c:m)
{
ans.push_back(c.second);
}
return ans;
}
};