把每个单词全部转化成小写字母,然后对每个单词的字母排序,同时原单词也需要存储,因为输出时要用到。如果排序之后的单词只出现了一次,那么将它对应的原单词输出。
STL会不会降低coder设计算法的能力啊?我都担心了~现在成了STL控,多简单的程序map、set都用上了……
以下是我的代码:
#include<iostream>
#include<vector>
#include<string>
#include<map>
#include<algorithm>
#include<cstdio>
#include<cctype>
using namespace std;
int main()
{
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
//*/
multimap<string,string> r;
string t;
while(cin>>t && t!="#")
{
string t_copy(t);
for(int i=0;i<t_copy.size();i++)
t_copy[i]=tolower(t_copy[i]);
sort(t_copy.begin(),t_copy.end());
r.insert(make_pair(t_copy,t));
}
vector<string> ans;
for(multimap<string,string>::iterator i=r.begin();i!=r.end();i++)
if(r.count(i->first)==1)
ans.push_back(i->second);
sort(ans.begin(),ans.end());
for(int i=0;i<ans.size();i++)
cout<<ans[i]<<endl;
return 0;
}
posted on 2011-04-09 11:06
lee1r 阅读(1281)
评论(6) 编辑 收藏 引用 所属分类:
题目分类:排序