leetcode题解434-字符串中的单词数(双指针经典)
发布日期:2025-04-05 05:52:52 浏览次数:8 分类:精选文章

本文共 883 字,大约阅读时间需要 2 分钟。

统计字符串中的单词个数。单词被定义为连续的非空格字符,无论字符类型。例如,"Hello,"被视为一个单词。使用双指针法,有效地解决问题。

双指针法解题思路

在这个问题中,双指针法非常有效。我们使用两个指针,i和j。i从左到右遍历字符串整个过程,而j从i指针的位置开始,寻找下一个空格的位置。以下是详细步骤:

  • 初始化计数器count为0。
  • 遍历i从0到字符串长度n。
  • 对于每个i,检查是否是空格。如果是,跳过。
  • 否则,设置j=i,开始寻找空格或者字符串末尾。继续移动j,只要s[j]不是空格。
  • 当遇到空格或倒数第二个字符时,停止。检查j是否大于i,若是则表示有一个单词,count加1。
  • 继续下一个i的位置,设置i=j,重复上述过程。
  • 这种方法确保了每个单词只被计数一次,并且高效地处理了各种空格分布情况。

    代码实现

    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),适用于长字符串。

    这种方法在处理字符串中间和两端空格、连续字符以及字符串末尾的情况时表现优异,确保正确统计单词数量。

    上一篇:leetcode题解46-全排列
    下一篇:leetcode题解41-缺失的第一个正数原来如此简单

    发表评论

    最新留言

    感谢大佬
    [***.8.128.20]2025年05月02日 14时53分21秒