//思路:用map<string,int>记录重排string后出现的次数,如果为1次,就是我们想要的结果
AC源码:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <cctype>
using namespace std;
map<string,int> cnt;
vector<string> svec;
void solve()
{
string buf;
while(cin>>buf)
{
if(buf=="#")
break;
svec.push_back(buf);
for(int i=0;i<buf.length();++i)
buf[i]=tolower(buf[i]);
sort(buf.begin(),buf.end());
if(!cnt[buf])
cnt[buf]=0;
cnt[buf]++;
}
sort(svec.begin(),svec.end());
vector<string> ans;
for(int i=0;i<svec.size();++i)
{
string tmp=svec[i];
for(int i=0;i<tmp.length();++i)
tmp[i]=tolower(tmp[i]);
sort(tmp.begin(),tmp.end());
if(cnt[tmp]==1)
ans.push_back(svec[i]);
}
for(int i=0;i<ans.size();++i)
cout<<ans[i]<<endl;
}
int main()
{
solve();
return 0;
}