#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中