例题5-3 安迪的第一个字典(Andy's First Dictionary,Uva 10815)题解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/richenyunqi/article/details/84929379

欢迎访问我的Uva题解目录哦 https://blog.csdn.net/richenyunqi/article/details/81149109

题目描述

例题5-3 安迪的第一个字典(Andy's First Dictionary,Uva 10815)题目描述

题意分析

输入一个文本,找出所有不同的单词(连续的字母序列),按字典序从小到大输出。单词不区分大小写。

注意点

输入中有单词中间夹杂字符的词汇,例如word.w这样的词汇,需要分割成wordw两个词进行输出。另外在注意把所有单词字母均化为小写字母

算法设计

我是直接使用的《算法竞赛入门经典》上的算法:由于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;
}

猜你喜欢

转载自blog.csdn.net/richenyunqi/article/details/84929379
今日推荐