
leetcode题解434-字符串中的单词数(双指针经典)
初始化计数器count为0。 遍历i从0到字符串长度n。 对于每个i,检查是否是空格。如果是,跳过。 否则,设置j=i,开始寻找空格或者字符串末尾。继续移动j,只要s[j]不是空格。 当遇到空格或倒数第二个字符时,停止。检查j是否大于i,若是则表示有一个单词,count加1。 继续下一个i的位置,设置i=j,重复上述过程。
发布日期:2025-04-05 05:52:52
浏览次数:8
分类:精选文章
本文共 883 字,大约阅读时间需要 2 分钟。
统计字符串中的单词个数。单词被定义为连续的非空格字符,无论字符类型。例如,"Hello,"被视为一个单词。使用双指针法,有效地解决问题。
双指针法解题思路
在这个问题中,双指针法非常有效。我们使用两个指针,i和j。i从左到右遍历字符串整个过程,而j从i指针的位置开始,寻找下一个空格的位置。以下是详细步骤:
这种方法确保了每个单词只被计数一次,并且高效地处理了各种空格分布情况。
代码实现
class Solution: def countSegments(self, s: str) -> int: count = 0 n = len(s) for i in range(n): if s[i] == ' ': continue j = i while j < n and s[j] != ' ': j += 1 if j > i: count += 1 return count
代码解释
- 初始化count为0。
- 遍历字符串索引i,从0到n-1。
- 检查每个字符是否为空格,若是则跳过。
- 否则,设置j=i,开始寻找下一个空格的位置。
- 移动j,直到遇到空格或字符串末尾。
- 如果在移动过程中,j超过i,表示存在一个非空格的字符串段,count加1。
- 代码简洁高效,时间复杂度为O(n),适用于长字符串。
这种方法在处理字符串中间和两端空格、连续字符以及字符串末尾的情况时表现优异,确保正确统计单词数量。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年05月02日 14时53分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
FLEX 4 :选择本地文件编辑
2025-03-31
Flex 与 spring mvc 整合 BlazeDB
2025-03-31
JAVA- 清除数组重复元素
2025-04-01
java-设计模式-装饰器设计模式,代理设计模式和继承三种扩展方法的比较
2025-04-01
java.io.tmpdir
2025-04-01
java农副产品购物app的设计与开发(ssm)
2025-04-01
Java创建elasticsearch的model时,如何配置使用ik分词器?
2025-04-02
java加密解密
2025-04-02
Java反射
2025-04-02
java反射介绍
2025-04-02
JAVA反射机制
2025-04-02
JAVA反射机制
2025-04-02
Java反序列化-CC2分析,从零基础到精通,收藏这篇就够了!
2025-04-02
Java反序列化和JNDI注入漏洞案例实战
2025-04-02
java反编译工具--jd-gui
2025-04-02
java取整和java四舍五入方法
2025-04-02
Java可变参数列表
2025-04-02
Java各中依赖包介绍
2025-04-02
Java合同管理系统(源码+mysql+文档)
2025-04-02
Java合肥市公务员报名管理系统(源码+mysql+文档)
2025-04-02