目录
时间限制:1秒 内存限制:128M
题目描述
小可在服务器上维护了一个字典库,里面存放了很多单词信息。
但是使用的时间长了,难免会出现很多的冗余信息。于是小可打算着手去整理这个字典库。
小可认为,如果一个字典中的单词,能够通过重新排列字母变成另一个字典中的单词,那么这个单词就是冗余的。比如 ride 和 dire 都在字典中,那么这两个都是冗余的。
当然,我们进行比较的时候,忽略字母大小写。也就是说如果字典中有 ride 和 DiRe ,这两个单词依旧都是冗余的。
输入描述
若干行单词,都是由大写字母或者小写字母构成。长度不超过 80 。以 # 结束输入。
输出描述
按字典序顺序输出非冗余的单词。
样例
输入
ssy DiRe My would ride SHOULD Yss #
输出
My SHOULD would
代码实现
#include<iostream>
#include<cmath>
#include<vector>
#include<map>
#include<cmath>
#include<algorithm>
#include<cstdio>
using namespace std;
map<string,int>cnt;
map<string,string>a;
vector<string>v;
string trons(string str){
int len=str.length();
for(int i=0;i<=len-1;i++){
if(str[i]>='A'&&str[i]<='Z'){
str[i]+=32;
}
}
sort(str.begin(),str.end());
return str;
}
int main(){
string s;
while(cin>>s){
if(s[0]=='#'){
break;
}
string temp=s;
s=trons(s);
cnt[s]++;
if(cnt[s]==1){
a[s]=temp;
}
map<string,int>::iterator it;
for(it=cnt.begin();it!=cnt.end();it++){
if(it->second=1){
v.push_back(a[it->first]);
}
}
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++){
cout<<v[i]<<endl;
}
}
return 0;
}