49.字母异位词分组
#include<iostream>
#include<string>
#include<vector>
#include<unordered_map>
using namespace std;
int main(){
//输入字符串数组 例:eat tea tan ate nat bat(MAC系统:回车+control D;win系统:回车+control Z;)
string word;
vector<string> strs;
while(cin>>word){
strs.push_back(word);
}
//mp映射,键为字符串,值为字符串及其字母异位词列表
//字母异位词排序均为同一字符串,由此加入对应列表
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;
}
版权声明:本文为zyzy19971111原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。