题目描述:
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
输入示例:
输入: "Hello, my name is John"
输出: 5
算法思想:遍历字符串,当前字符如果是非空格字符,且前一个字符是空格字符或者当前字符是非空格字符,且是第一个字符,则计数+1
class Solution {
public:
int countSegments(string s) {
int res=0;
for(int i=0; i<s.length(); i++)
if(s[i]!=' ' && (i==0 || s[i-1]==' '))
res++;
return res;
}
};
方法2:stringstream会按照空格划分字符串
class Solution {
public:
int countSegments(string s) {
int count=0;
stringstream ss(s);
while(ss>>s)
count++;
return count;
}
};
方法3:遍历字符串,遍历过程中碰到第一个非空格字符,则计数count++,然后不断向后移动指针,直到碰到空格或者到字符串结束为止
class Solution {
public:
int countSegments(string s) {
int count=0;
for(int i=0;i<s.size();i++){
if(s[i]!=' ') count++;
while(i<s.size()&& s[i]!=' ') i++;
}
return count;
}
};