https://vjudge.net/problem/UVA-156
#include<stdio.h> #include<stdlib.h> #include<string.h> #include <iostream> #include <map> #include <algorithm> using namespace std; map<string ,int > d; map<string ,string > p; string a[5555],b[5555]; void run(string &a) { int x=strlen(&a[0]); for(int j=0;a[j];j++) a[j]=tolower(a[j]); sort(a.begin(),a.end()); } int main() { int i=0; while(cin>>a[i]&&a[i]!="#") { string c=a[i]; run(a[i]); p[a[i]]=c;//记录原串 d[a[i]]++; i++; } int j=0; for(int i=0;a[i][0];i++) { //cout<<a[i]<< ' '<<d[a[i]]<<endl; if(d[a[i]]==1) b[j++]=p[a[i]]; } sort(b,b+j); for(int i=0;i<j;i++)cout<<b[i]<<endl; } #include<stdio.h> #include<stdlib.h> #include<string.h> #include <iostream> #include <map> #include <algorithm> #include <vector> using namespace std; map<string,int > cnt; vector <string> words; string repr(const string &s) { string ans=s; for(int i=0;i<ans.length();i++) { ans[i] = tolower(ans[i]); } sort(ans.begin(),ans.end()); } int main() { int n=0; string s; while(cin>>s&&s!="#") { words.push_back(s); string r=repr(s); if(!cnt.count(r)) cnt[r]=0; cnt[r]++; } vector<string > ans; for(int i=0;i<words.size();i++) { if(cnt[repr(words[i])]==1) ans.push_back(words[i]); } sort(ans.begin(),ans.end()); for(int i=0;i<ans.size();i++) cout<<ans[i]<<endl; }