# 单词个数统计-Day000

单词个数统计-Day000

题目:

从键盘输入一行字符,长度小于1000,统计其中单词的个数,个单词以空格分隔,且空格数可以是多个。
输入一行句子,仅有空格和英文字母构成。

输入格式:

输入只有一行句子。仅有空格和英文字母构成。

输出格式:

单词的个数

输入样例:

To be or not to be This is a question

输出样例:

10

解决方法00:
  1. 基本思想:
    首先考虑如何输入一个带空格的字符串,可以考虑使用getline()cin.get()cin.getline(),注意三者的区别。
    其次是如何计算单词的数量,这里选择计算空格的数量。
    遍历字符串,如果前面一个字符不是空格,且当前字符是空格,计数器加1;
    使用tag标记上一个字符是不是空格,注意考虑如果字符串最后一个不是空格,那么计数器应该再加1。
  2. 代码实现:
#include<iostream>
#include<string>
using namespace std;

string s;
int cnt;

int main()
{
	getline(cin, s);

	int tag = 0;
	for (int i = 0; i < s.length(); i++)
	{
		if (s[i] == ' ' && tag == 1) cnt++;

		if (s[i] == ' ') tag = 0;
		else tag = 1;
	}

	if (s[s.length() - 1] != ' ') cnt++;	//最后可能不含空格

	cout << cnt << endl;

	return 0;
}
解决方法01:
  1. 基本思想:
    通过while循环每次输入一个单词并用vector保存,遇到换行符\n则退出循环,最后计算vector的大小。
  2. 代码实现:
#include<iostream>
#include<string>
#include<vector>
using namespace std;

string t;
vector<string> s;

int main()
{
	while (cin >> t)
	{
		s.push_back(t);

		if (cin.get() == '\n') break;
	}

	cout << s.size() << endl;

	return 0;
}

注:方法可能存在错误,欢迎各位指出。更多关于输入带空格字符串请参考文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值