一、题目描述
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例:
输入: "Hello, my name is John"
输出: 5
解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/number-of-segments-in-a-string
二、运行结果
三、解题思路
设置一个布尔变量(isEmpty)作为标志当期字符的前一个字符是空格符还是其他字符,初始化为空格符(true),从头到尾遍历字符串,如果当前字符不是空格符,并且前一个字符是空格,则表示这是一个新的单词,计数变量加1(ans),遍历每个字符时,都根据是否为空格,设置标志变量isEmpty的值,供下一个字符进行判断是否为新单词。
四、代码
class Solution {
public int countSegments(String s) {
int len = s.length();
int ans = 0;
boolean isEmpty = true; //记录当前字符的前一个字符是否为空格
for(int i=0; i<len; ++i)
{
if(s.charAt(i) == ' ') //空格符
{
isEmpty = true;
}
else //非空格符
{
if(isEmpty) //如果前一个字符是空格符
{
ans++;
isEmpty = false;
}
}
}
return ans;
}
}