统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例:
输入: "Hello, my name is John"
输出: 5
解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。
可以用istringstream对字符进行分割
cpp
class Solution {
public:
int countSegments(string s) {
//使用输入字符串流来解析输入的字符串
istringstream stream(s);
//定义一个字符串变量word,用于存储从流中提取的每个单词
string word;
//定义一个计数器变量,用于统计单词的个数
int count=0;
//使用while循环和提取运算符(>>)从流中提取单词
//当流中还有可以提取的单词时,循环继续
while(stream>>word){
//每次成功提取一个单词,计数器自增
count++;
}
//循环结束后,返回计数器的值,即单词的总数
return count;
}
};
还有另一个直接的思路,就是去遍历字符串,判断若每个单词的前一个字符为空格,而当前字符串不为空格,则存在一个单词,计数器加1
cpp
class Solution {
public:
int countSegments(string s) {
//定义一个计数器变量,用于统计单词的个数
int count=0;
for(int i=0;i<s.size();i++){
if((i==0||s[i-1]==' ')&&s[i]!=' '){
count++;
}
}
//循环结束后,返回计数器的值,即单词的总数
return count;
}
};