49.字母异位词分组
#include<iostream>
#include<string>
#include<vector>
#include<unordered_map>
using namespace std;
int main(){
string word;
vector<string> strs;
while(cin>>word){
strs.push_back(word);
}
unordered_map<string,vector<string> > mp;
for(string s:strs){
string key=s;
sort(key.begin(),key.end());
mp[key].push_back(s);
}
unordered_map<string,vector<string> >::iterator it;
for(it=mp.begin();it!=mp.end();it++){
for(int i=0;i<(it->second).size();i++){
cout<<(it->second)[i]<<" ";
}
cout<<endl;
}
return 0;
}
#include<iostream>
#include<string>
#include<vector>
#include<unordered_map>
using namespace std;
vector<vector<string> > groupAnagrams(vector<string>& strs) {
unordered_map<string,vector<string> > mp;
for(string s:strs){
string key=s;
sort(key.begin(),key.end());
mp[key].push_back(s);
}
vector<vector<string> > ans;
unordered_map<string,vector<string> >::iterator it;
for(it=mp.begin();it!=mp.end();it++){
ans.push_back(it->second);
}
return ans;
}
int main(){
string word;
vector<string> strs;
while(cin>>word){
strs.push_back(word);
}
vector<vector<string> > ans;
ans=groupAnagrams(strs);
vector<vector<string> >::iterator it;
for(it=ans.begin();it!=ans.end();it++){
for(int i=0;i<(*it).size();i++){
cout<<(*it)[i]<<" ";
}
cout<<endl;
}
return 0;
}