UVA10815 安迪的第一个字典 Andy‘s First Dictionary

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

输入样例
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.
输出样例
a
adventures
blondes
came
disneyland
fork
going
home
in
left
read
road
sign
so
the
they
to
two
went
were
when
代码
#include<iostream>
#include<algorithm>
#include<sstream>
#include<string>
#include<set>//因为可能有重复的单词,而set可以去重,使用起来更好。

using namespace std;
string str,str2;
stringstream ss;
set<string> jh;
int main() {
	while (cin >> str ) {
		for (int i = 0; i < str.length(); i++) {//去除非单词字符
			if (isalpha(str[i])) {
				str[i] = tolower(str[i]);
			}
			else {
				str[i] = ' ';
			}
		}
		ss << str; //每次得清空ss
		//stringstream ss(str);  如果这样写就不用每次清空ss了.
		while (ss >> str) 
			jh.insert(str);
		ss.clear();//这里必须清空...具体原因为止.
	}
	for (set<string>::iterator it = jh.begin(); it != jh.end(); it++) {
		cout << *it << endl;
	}
	return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的大李子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值