题目大意:在输入的一段小短文中,排查单词,选出经过重排也排不成文中另外单词的单词。最后输出的时候用字典序排序输出
所学知识点:map,它能自动统计文中这段单词出现的次数,(很厉害)
sort函数能自动用字典序对一系列单词排序(可直接用)
本题还将vector和map连起来一起用了。
#include<iostream>
#include<string>
#include<cctype>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
map<string,int> cnt; //<键 值>
vector<string> words; // 字符串容器
string repr(const string& s)
{
string ans = s;
for(int i = 0; i < ans.length(); 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; //非0为真,也就是cnt.count(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] << "\n";
return 0;
}