#include<bits/stdc++.h>3 using namespace std; map<string ,int> v1; map<string ,string> v2; set<string> ans; int main() { string str ,st; while(cin >> str) { if(str == "#") break; st = str; for(int i = 0;i < st.length();i++) { st[i] = tolower(st[i]); } sort(st.begin() ,st.end()); v1[st]++; v2[st] = str; } for(auto it : v1) { if(it.second == 1) ans.insert(v2[it.first]); } for(auto &it : ans) { cout << it << endl; } return 0; }
最重要的是想到設置兩個map 和標準化的單詞 也就是將單詞全變爲小寫並排序 以及set會自動排序的特色c++
一個是[標準化後的字符串[標準化後字符串的出現次數]spa
另外一個是[標準化後的字符串][原單詞]code
第一個用於判斷 若是該標準化後的字符串只出現了一次 那麼這個單詞就符合條件 這時候用第二個map insert到一個set中blog
最後利用迭代器輸出set便可排序
其中迭代器有兩種使用方法ci
一個是if(auto it : s)字符串
另外一個是 if(auto &it :s)string
第一個是可讀 用於讀取處理 不輸出it
第二個用於輸出class
雖然it : s 但不侷限於x 也能夠指向另外一個map 的相同位置 從而當次數符合條件判斷後 insert 第二個map的原單詞到set中