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

輸入一個文本,找出全部不一樣的單詞(連續的字母序列),按字典序從小到大輸出。單 詞不區分大小寫。ios

樣例輸入: 數組

Adventures in Disneyland spa

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

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

樣例輸出(爲了節約篇幅只保留前5行): blog

a ci

adventures string

blondes it

came io

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<<"\n";
    }
    return 0;
}

 

上面的代碼用到了set中元素已從小到大排好序這一性質,用一個for循環便可從小到大 遍歷全部元素。iterator的意思 是迭代器,是STL中的重要概念,相似於指針。和「vector相似於數組」同樣,這裏的「相似」指 的是用法相似。

相關文章
相關標籤/搜索