句子里总的有多少个单词

Tyvj初学者题库Q1076:http://www.tyvj.cn/Open_Problem_Show.aspx?id=1076

描述 Description

一年级的英语课上,,

老师在黑板上写着一个句子,,
 问你这个句子有多少个单词


你不屑于回答这种问题,
所以你打算编一个程序来回答。

输入格式 InputFormat

一行,有若干个单词或标点符号。长度小于256

输出格式 OutputFormat

一行,一个整数表示单词数。

样例输入 SampleInput [复制数据]

Hello everybody!!Vivian Snow is the greatest alive.

样例输出 SampleOutput [复制数据]

8

数据范围和注释 Hint

数据保证单词只出现在第一行
数据保证不会出现譬如单词间有多个空格等缺心眼的情况

题解:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main()
{
	string s;
	getline(cin,s);
	int len = s.size();
	for(int i=0; i<len; ++i)
	{
		if(s[i]<'a'&&s[i]>'Z') s[i] = ' ';
		else if(s[i]<'A'||s[i]>'z') s[i] = ' ';
	}
	stringstream ss(s);
	string word;
	int cnt = 0;
	while(ss >> word) ++cnt;
	cout << cnt << endl;
	return 0;
}

一开始没什么思路,不能用单词的计算字符串个数,因为可能两个单词是由句末的标点符号连接在一起的。

所以问题的关键,在于如何合理地把单词分拆开来——我把原来的字符串中的所有非字母的符号全部变成了空格,然后用这个改造之后的字符串创建了一个字符串流对象作为数据源来输入单词,进行计数,就这样,很简单的ac了,哈哈,吃午饭去咯!


你可能感兴趣的:(字符串处理)