题意:
输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词,在判断是否满足条件时,字母不分大小写,但在输出时应保留输入的大小写,按字典序进行排列。
代码如下:
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
string reset(const string &word)
{
string s = word;
for(int i = 0; i < s.size(); i++){
s[i] = tolower(s[i]);
}
sort(s.begin(),s.end());
return s;
}
vector<string> words;
map<string,int> cnt;
int main()
{
string word;
while(cin>>word){
if(word[0] == '#') break;
words.push_back(word);
string str = reset(word);
if(!cnt.count(str)){
cnt[str] = 0;
}
cnt[str]++;
}
vector<string> ans;
for(int i = 0; i < words.size(); i++){
if(cnt[reset(words[i])] == 1){
ans.push_back(words[i]);
}
}
for(int i = 0; i < ans.size(); i++){
cout << ans[i] << endl;
}
sort(ans.begin(),ans.end());
return 0;
}