UVA 156 Ananagrams
阿新 • • 發佈:2019-02-05
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 stringans = 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