• 安迪的第一个字典(Andy's First Dictionary,Uva 10815)


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

    样例输入:

    Adventures in Disneyland

    Two blondes were going to Disneyland when they came to a fork in the road.

    The sign read: "Disneyland Left." So they went home.

    样例输出(为了节约篇幅只保留前5行):

    a

    adventures

    blondes

    came

    disneyland

    【分析】

    本题没有太多的技巧,只是为了展示set的用法:由于string已经定义了“小于”运算符, 直接使用set保存单词集合即可。注意,输入时把所有非字母的字符变成空格,然后利用 stringstream得到各个单词。

    #include <iostream>
    #include<string>
    #include<set>
    #include<sstream>
    using namespace std;
    
    set<string> dict;  //string 集合 
    
    int main(){
        string s,buf;
        while(cin>>s){
            for(int i=0;i<s.length();i++){
                if(isalpha(s[i])) s[i]=tolower(s[i]);else s[i]=' ';
            }
            stringstream ss(s);
            while(ss>>buf ) dict.insert(buf);
            
        }
        for(set<string>::iterator it = dict.begin();it!=dict.end();++it){
            cout<<*it<<"
    ";
        }
        return 0;
    }

    上面的代码用到了set中元素已从小到大排好序这一性质,用一个for循环即可从小到大 遍历所有元素。iterator的意思 是迭代器,是STL中的重要概念,类似于指针。和“vector类似于数组”一样,这里的“类似”指 的是用法类似。

  • 相关阅读:
    HTML标签和属性三
    HTML标签和属性二
    HTML标签和属性一
    小程序相关面试题
    Vue路由的hash模式与history模式的区别?
    android中VideoView播放sd卡上面的视频
    Android中app开机自启动的开发
    java中byte,byte[]和int之间的转换
    Android多activity启动两种方式浅谈
    Android开发用到的几种常用设计模式浅谈(一):组合模式
  • 原文地址:https://www.cnblogs.com/LOW-ctfer/p/10421413.html
Copyright © 2020-2023  润新知