持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情
一、题目描述:
434. 字符串中的单词数 - 力扣(LeetCode) (leetcode-cn.com)
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例:
输入: "Hello, my name is John"
输出: 5
解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。
二、思路分析:
看到空格隔开,首先想到split(),split 时间复杂度为O(n),完美解决!
等等,好像有坑,如果单词之间有多个空格或者首字符为空格呢? split() 之后还得判断下数组长度 时间复杂度为 O(n) + O(n/m) m为空格数量,不符合题意
如果遍历char数组呢?当判断从空格到字符时,计数器+1
- 初始默认是空格 (当第一个字符非空格时能统计出该单词数量)
- 当 当前字符不为空格且上一字符为空格时 计数器+1
三、AC 代码:
public int countSegments(String s) {
int count =0;
boolean isSpace=true;
char[] chars = s.toCharArray();
for (char c : chars) {
// 空格 ASCII 为 32
if(c != 32 && isSpace){
count ++;
}
isSpace = c==32;
}
return count;
}
一定要仔细读题,什么是单词。这里的单词指的是连续的不是空格的字符。
所以说出了空格的其他字符都可认定为单词。
范文参考:
简单字符串判断,当前不为空格且后一位为空格单词加一,到最后一个字符加一 - 字符串中的单词数 - 力扣(LeetCode)
No.434. 【Python】字符串中的单词数(不需要使用库函数,字符串两端也不需要添加额外的空格) - 字符串中的单词数 - 力扣(LeetCode)