这道题主要就是空串和空格的影响,只要将这两个问题解决,那么这道题也就解完了
我的思路是统计空格的个数,由于头尾的空格和中间的多个空格可能会对结果产生影响
所以在程序的开始,先去掉字符串头部和尾部的空格,此时如果左指针 i 比右指针 j 大,
那么证明这是一个完全的空格串,返回 0,如果相反,那么证明肯定会有单词,由于
统计的是中间的空格数,按照两点之间有一个空格的思维,单词数=空格数+1,所以
置 temp=1,如果遇到了空格,就跳过当前以及后续可能挨着的空格,重复执行。
class Solution {
public:
int countSegments(string s) {
if(s == "") // 判断是否为空串
{
return 0;
}
int n = s.length() - 1,sum = 0, i = 0, temp = 0, j;
while(i <= n && s[i] == ' ') // 去除头部空格
{
++i;
}
while(n >= i && s[n] == ' ') // 去除尾部空格
{
--n;
}
for(j = i; j <= n; ++j) // 统计中间空格数
{
temp = 1;
if(s[j] == ' ')
{
++sum;
while(j <= n && s[j] == ' ')
{
++j;
}
}
}
return sum + temp;
}
};