题目:
输入一个文本,找出所有不同单词(连续的字母序列),按字典序从小到大输出,不区分大小写。
样例输入:
Adventure in Disneyland.
Two blonds were going to Disneyland when they came to a fork in the road.
The sign read: “Disneyland Left”.
So they went home.
样例输出:(只保留前五行)
a
adventure
blonds
came
disneyland
分析:
字符串问题:看到给出一个文本有空格和换行,可以考虑用stirngstream去掉空格,题目还要求按字典序输出不重复的单词,很明显set有这个功能,然后进行模拟即可。
里面还有一个用得很妙的地方就是如果字符串中不是英文字母,就用空格代替,这样再获取单词时就不会出错了
#include<set>
#include<sstream>
#include<string>
#include <iostream>
#include <algorithm>
using namespace std;
set<string>dict;
int main()
{
string s;
while (cin >> s) {
for (int i = 0; i < s.size(); ++i) {
if (isalpha(s[i])) {
s[i] = tolower(s[i]);
}
else {
s[i] = ' ';
}
}
string buf;
stringstream ss(s);
while (ss >> buf) {
dict.insert(buf);
}
}
for (set<string>::iterator it = dict.begin(); it != dict.end(); ++it) {
cout << *it << endl;
}
return 0;
}