P115
class Solution {
public:
string getKeyBySort(string str){
int ch[27] = {0};
string newStr="";
for(int i = 0;i<str.size();i++)
ch[str[i]-'a']++;//利用int数组统计26个字母出现次数
int i = 25;
while(i>=0)
{
if(ch[i]>0)//相同字母出现多次
{
newStr+=char('a'+i);
ch[i]--;
}
else i--;//转换其他字母
}
return newStr;
}
vector<vector<string>> groupAnagrams(vector<string>& strs) {
map<string, vector<string>> mp;//把所有字母移位词凑到一个key对应的value数组中
for(string str: strs)//范围for循环遍历
{
string newstr = getKeyBySort(str);
mp[newstr].push_back(str);
}
vector<vector<string>> yiwei;
for(map<string, vector<string>>::iterator it = mp.begin();it!=mp.end();it++)
yiwei.push_back(it->second);
return yiwei;
}
};