原文链接: https://leetcode-cn.com/problems/number-of-segments-in-a-string
英文原文
You are given a string s
, return the number of segments in the string.
A segment is defined to be a contiguous sequence of non-space characters.
Example 1:
Input: s = "Hello, my name is John" Output: 5 Explanation: The five segments are ["Hello,", "my", "name", "is", "John"]
Example 2:
Input: s = "Hello" Output: 1
Example 3:
Input: s = "love live! mu'sic forever" Output: 4
Example 4:
Input: s = "" Output: 0
Constraints:
0 <= s.length <= 300
s
consists of lower-case and upper-case English letters, digits or one of the following characters"!@#$%^&*()_+-=',.:"
.- The only space character in
s
is' '
.
中文题目
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例:
输入: "Hello, my name is John" 输出: 5 解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。
通过代码
高赞题解
模拟
题目对于「单词」的定义为「连续的不是空格的字符」。
因此,我们可以从前往后处理字符串 s
并进行计数,对于是空格的字符进行跳过(不计数),而对于非空格字符,则在遍历完一个完整单词(连续一段)后进行一次计数。
代码:
class Solution {
public int countSegments(String s) {
int n = s.length();
int ans = 0;
for (int i = 0; i < n; ) {
if (s.charAt(i) == ' ' && i++ >= 0) continue;
while (i < n && s.charAt(i) != ' ') i++;
ans++;
}
return ans;
}
}
- 时间复杂度:$O(n)$
- 空间复杂度:$O(1)$
其他
国庆题太简单?
不如来做一道热乎的 背包问题求方案数(公主号「背包专题」的第 $20$ 讲,共 $23$ 讲)🍭🍭🍭
或是加练如下「模拟」题目 🍭🍭🍭
注:以上目录整理来自 wiki,任何形式的转载引用请保留出处。
最后
如果有帮助到你,请给题解点个赞和收藏,让更多的人看到 ~ (“▔□▔)/
也欢迎你 关注我(公主号后台回复「送书」即可参与长期看题解学算法送实体书活动)或 加入「组队打卡」小群 ,提供写「证明」&「思路」的高质量题解。
所有题解已经加入 刷题指南,欢迎 star 哦 ~
统计信息
通过次数 | 提交次数 | AC比率 |
---|---|---|
65647 | 164743 | 39.8% |
提交历史
提交时间 | 提交结果 | 执行时间 | 内存消耗 | 语言 |
---|