您的位置:首页 > 其它

uva10815 分离字符串

2014-01-23 01:42 120 查看
题意:将从文件中读入的所有字符,大写改为小写,去掉非字母字符,然后单词去重按字典序输出。

解法:刚开始以为例如aa_bb是一个aabb单词,后来wa了几发发现要处理为两个单词。本来想重写的,后来突然发现可以在原代码上加个递归就可以处理这种情况了,感觉很舒畅,由于map本来就是按字典序排的,所以直接输出就好了。

代码:
#include <iostream>
#include <map>
#include <set>
#include <stdio.h>
using namespace std;
char s1[10000];
map<string,int> maps;
int main()
{
freopen("in.txt","r",stdin);
while(scanf("%s",s1)!=EOF)
{
string s(s1);
for(int i=0;i<s.size();i++)
if(s[i]>='A'&&s[i]<='Z')
s[i]='a'+s[i]-'A';
else if(s[i]>='a'&&s[i]<='z');
else s.erase(i,1);
if(maps.find(s)!=maps.end());
else maps.insert(pair<string,int> (s,1));
}
for(map<string,int>::iterator p=maps.begin();p!=maps.end();p++)
cout<<p->first<<'\n';
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: