版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/richenyunqi/article/details/84929379
欢迎访问我的Uva题解目录哦 https://blog.csdn.net/richenyunqi/article/details/81149109
题目描述
题意分析
输入一个文本,找出所有不同的单词(连续的字母序列),按字典序从小到大输出。单词不区分大小写。
注意点
输入中有单词中间夹杂字符的词汇,例如word.w
这样的词汇,需要分割成word
和w
两个词进行输出。另外在注意把所有单词字母均化为小写字母
算法设计
我是直接使用的《算法竞赛入门经典》上的算法:由于string已经定义了“小于”运算符,又需要去重,直接使用set保存单词集合即可。注意,输入时把所有非字母的字符变成空格,然后利用stringstream来得到各个单词即可。
C++代码
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
set<string>dic;
while(cin>>s){
for(auto&c:s)
if(!isalpha(c))
c=' ';
else
c=tolower(c);
stringstream stream(s);
while(stream>>s)
dic.insert(s);
}
for(string ss:dic)
puts(ss.c_str());
return 0;
}