/* 收获: 1. map是从键到值的映射 例子:map<string, int> month_name; month_name["July"] = 7; map除了支持set支持的insert、find、count、remove外,还支持 [] 运算符,故map可弹鼓奏数组使用,map也称为“关联数组” 2. 对string的sort排序,写法为: sort(s.begin(), s.end()); 和vector的排序的写法十分相似 3. map中的count函数: https://zhidao.baidu.com/question/436360212519839724.html 分析: 把每个单词“标准化”,即全部转换为小写字母后,再进行排序,然后再放到map中进行统计 */
#include <iostream> #include <string> #include <cctype> #include <vector> #include <map> #include <algorithm> using namespace std; map<string, int> cnt; vector<string> words; // 将单词s进行标准化 string repr(const string& s) { string ans = s; for (int i = 0; i < ans.size(); i++) ans[i] = tolower(ans[i]); sort(ans.begin(), ans.end()); return ans; } int main() { int n = 0; string s; while (cin >> s) { if (s[0] == '#') break; 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; return 0; }