输入一个文本,找出全部不一样的单词(连续的字母序列),按字典序从小到大输出。单 词不区分大小写。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相似于数组”同样,这里的“相似”指 的是用法相似。