题目描述
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
输入示例
输入: "Hello, my name is John" 输出: 5
题目详解
思路分析
事先定义一个count=0来统计单词数.
根据描述发现只有遇到" "(空格)才能认为有了一个单词(count++),但如果空格前面还是空格,则不能进行count++,所以我们需要在定义一个k来标记我们遇到" "之前是否遇到了别的字符,
每次遇到" "之后进行判断前面是否遇到了别的字符,遇到了则count++,k=0。
由于可能会出现例如"apple"这样没有" "的字符串,所以在for循环结束之后需要再判断一次是否遇到了字符,遇到则count++。
详细代码
#include<iostream>
#include<string>
using namespace std;
int main(){
string s;
getline(cin,s);
int count = 0;//单词数
int k = 0;//标记是否遇到了别的字符
int n = s.length();
for(int i=0;i<n;i++)
{
if(s[i]==' '){
if(k>0){//遇到" "且之前遇到了别的字符
count++;
k = 0;
}
}else{//遇到别的字符
k++;
}
}
if(k>0){
count++;
}
cout<<count<<endl;
return 0;
}