文章目录
- 一【题目类别】
- 二【题目难度】
- 三【题目编号】
- 四【题目描述】
- 五【题目示例】
- 六【解题思路】
- 七【时空频度】
- 八【代码实现】
- 九【提交结果】
一【题目类别】
- 字符串
二【题目难度】
- 简单
三【题目编号】
- 434.字符串中的单词数
四【题目描述】
- 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
- 请注意,你可以假定字符串里不包括任何不可打印的字符。
五【题目示例】
- 示例:
- 输入: “Hello, my name is John”
- 输出: 5
- 解释: 这里的单词是指连续的不是空格的字符,所以 “Hello,” 算作 1 个单词。
六【解题思路】
- 根据题意可知,单词由空格分隔
- 所以我们可以通过空格的数量来计算单词的数量,即如果当然字母不为空格,且当前字母的前一个位置为空格,那么以当前字母开始就是一个单词
- 不过需要注意第一个单词需要特殊处理,因为第一个单词前面没有空格
- 最后返回结果即可
- 具体细节可以参考下面的代码
七【时空频度】
- 时间复杂度: O ( n ) O(n) O(n), n n n为传入的字符串的长度
- 空间复杂度: O ( 1 ) O(1) O(1)
八【代码实现】
- Java语言版
class Solution {public int countSegments(String s) {// 计数单词int count = 0;for (int i = 0; i < s.length(); i++) {// 以空格分割单词来计数,要注意第一个单词要特殊处理if ((i == 0 || s.charAt(i - 1) == ' ') && s.charAt(i) != ' ') {count++;}}// 返回结果return count;}
}
- Python语言版
class Solution:def countSegments(self, s: str) -> int:# 计数单词count = 0for i in range(0, len(s)):# 以空格分割单词来计数,要注意第一个单词要特殊处理if (i == 0 or s[i - 1] == ' ') and s[i] != ' ':count += 1# 返回结果return count
- C语言版
int countSegments(char* s)
{// 计数单词int count = 0;for (int i = 0; i < strlen(s); i++){// 以空格分割单词来计数,要注意第一个单词要特殊处理if ((i == 0 || s[i - 1] == ' ') && s[i] != ' '){count++;}}// 返回结果return count;
}
九【提交结果】
-
Java语言版
-
Python语言版
-
C语言版