一、题目
二、代码
class Solution
{
public:
vector<vector<string>> groupAnagrams(vector<string>& strs)
{
int i,j;
vector<string> sorted_string;
vector<vector<string>> return_vector;
for(i=0;i<strs.size();i++) sorted_string.push_back(strs[i]);
//每个单词排序
for(i=0;i<sorted_string.size();i++) sort(sorted_string[i].begin(),sorted_string[i].end());
//存到multimap中
multimap<string,int> re_map;
for(i=0;i<sorted_string.size();i++) re_map.insert(pair<string,int>(sorted_string[i],i));
//显示
// for(it=re_map.begin();it!=re_map.end();it++)
// {
// std::cout<<" "<< it->first <<" "<< it->second <<std::endl;
// }
//vector 排序
sort(sorted_string.begin(),sorted_string.end());
for(i=0;i<sorted_string.size();i++)
{
if(i!=sorted_string.size()-1&&sorted_string[i]==sorted_string[i+1]) continue;
// std::cout<<" "<<sorted_string[i]<<std::endl;
multimap<string,int>::iterator it;
vector<string> temp_string;
it=re_map.find(sorted_string[i]);
while(it!=re_map.end())
{
temp_string.push_back(strs[it->second]);
re_map.erase(it);
it=re_map.find(sorted_string[i]); //找不到就退出
}
return_vector.push_back(temp_string);
}
return return_vector;
}
};