1. 程式人生 > >UVA 156 Ananagrams

UVA 156 Ananagrams

ace main pre out return ams amp include words

把每個單詞“標準化“,即全部轉化為小寫再排序,然後放到map中統計。

 1 #include "iostream"
 2 #include "string"
 3 #include "cctype"
 4 #include "vector"
 5 #include "map"
 6 #include "algorithm"
 7 using namespace std;
 8 map<string, int> cnt;
 9 vector<string> words;
10 string repr(const string& s)//化為小寫
11 {
12     string
ans = s; 13 for (int i = 0; i < ans.length(); i++) 14 { 15 ans[i] = tolower(ans[i]); 16 } 17 sort(ans.begin(), ans.end()); 18 return ans; 19 } 20 int main() 21 { 22 int n = 0; 23 string s; 24 while (cin>>s) 25 { 26 if (s[0] == #) 27 break
; 28 words.push_back(s);//壓進去 29 string r = repr(s);//化為小寫 30 if (!cnt[r]) 31 cnt[r] = 0; 32 cnt[r]++; 33 } 34 vector<string> ans; 35 for (int i = 0; i < words.size(); i++) 36 { 37 if (cnt[repr(words[i])] == 1)//重復度為1則為答案 38 ans.push_back(words[i]);
39 sort(ans.begin(), ans.end());//排序 40 } 41 for (int i = 0; i < ans.size(); i++) 42 { 43 cout << ans[i] << endl; 44 } 45 return 0; 46 }

UVA 156 Ananagrams