开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情
一、题目描述:
434. 字符串中的单词数 - 力扣(LeetCode) (leetcode-cn.com)
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例:
输入: "Hello, my name is John"
输出: 5
解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。
二、思路分析:
-
一个字符串存在多种可能
- 字符串为空时(自己在想的时候忽略了)
- 字符串之间空格符数量很多时
- 字符串头与尾均有很多空格符时
-
代码实现:
- 根据1.(1)的情况首先对空字符串进行判断,若为true则返回0个数
- 字符串不为空时,对1.(3)的情况进行处理,对两端进行除空字符处理
- 对字符串进行遍历,当存在空字符串时,表示,空字符串后一定有一个单词,所以count计数加一
- 由于存在可能存在多个单词,所以需要运用循环进行反复遍历,每次count+1,
- 便将原字符进行裁剪处理(获取空字符的索引,在空字符处进行剪裁)
- 根据1.(2)的情况,每次裁剪完需要对字符串进行两端空字符处理
- 直到新字符串没有空字符时,则跳出循环
- 因为最后一个单词是不包含空字符的,所以最后计数时需要加一
三、AC 代码:
class Solution {
public int countSegments(String s) {
s = s.trim();
int count = 0;
if(s.isEmpty()){
return count;
}
while(s.contains(" ")){
count++;
s = s.substring(s.indexOf(" ")+1).trim();
}
return count+1;
}
}