434. 字符串中的单词数
题目描述
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例:
输入: "Hello, my name is John" 输出: 5 解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。
解法
方法一:字符串分割
我们将字符串 \(\textit{s}\) 按照空格进行分割,然后统计不为空的单词个数。
时间复杂度 \(O(n)\),空间复杂度 \(O(n)\)。其中 \(n\) 为字符串 \(\textit{s}\) 的长度。
1 2 3 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
方法二:模拟
我们也可以直接遍历字符串的每个字符 \(\text{s[i]}\),如果 \(\text{s[i]}\) 不是空格且 \(\text{s[i-1]}\) 是空格或者 \(i = 0\),那么就说明 \(\text{s[i]}\) 是一个新的单词的开始,我们就将答案加一。
遍历结束后,返回答案即可。
时间复杂度 \(O(n)\),其中 \(n\) 为字符串 \(\textit{s}\) 的长度。空间复杂度 \(O(1)\)。
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|