题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19294
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <map>
using namespace std;
/***************************************************************************************************************
题意:找出不能通过字母重重排的单词,按字典序输出(came 和 mace 属于重排单词,不能输出)
思路:
1,熟悉STL的用法
2,压栈用原字符串,处理用小写单词,输出原串
***************************************************************************************************************/
vector <string> words;
map <string,int> cnt;
string fuc(string s)
{
string ans=s;
for(int i = 0;i < ans.length();i ++)
if(isalpha(ans[i])) //判断是否为小写字母,返回0是非小写字母,否则是
ans[i]=tolower(ans[i]); //将小写字母转换成大写字母
sort(ans.begin(),ans.end());
return ans;
}
int main()
{
string s;
while(cin>>s,s != "#")
{
words.push_back(s);
string temp=fuc(s);
if(!cnt.count(temp)) cnt[temp]=0;
cnt[temp]++;
}
vector <string> ans;
for(int i = 0;i < words.size();i ++)
if(cnt[fuc(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;
}