# UVa 156 - Ananagrams --- # 題目大意 給許多英文句子,印出其中不重複的單字。重複的意思是用的字母個數分別相同,比方說Rob和bOr重複。 --- # 題解 讀入一個單字後先轉小寫再排序,接著以此當map的key,最後看只要印出現次數是1的就好,為了方便用set存起來,不然最後再一起排序也可以。 --- ```=C++ #include <bits/stdc++.h> #define ll long long #define pb push_back #define pf push_front #define ft first #define sec second #define pr pair<string,int> #define ISCC ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); using namespace std; int t ,n ,m ,pos; string s ,tp; map<string ,pr> mp; set<string> ans; inline void trans(){for(int i=0 ;i<tp.size() ;i++) if(tp[i]<'a') tp[i]+=32;} int main() { while(cin >> s && s != "#") { tp = s; trans(); sort(tp.begin() ,tp.end()); if(!mp.count(tp)) mp[tp].sec=0; mp[tp].sec++; mp[tp].ft = s; } for(auto v:mp) if(v.sec.sec == 1) ans.insert(v.sec.ft); for(auto v:ans) cout << v << '\n'; return 0; } ```