每日leetcode-数组-434. 字符串中的单词数

分类:字符串 - 单词

题目描述:

统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。

请注意,你可以假定字符串里不包括任何不可打印的字符。

解题思路1:直接用split分割,然后统计个数

class Solution:
    def countSegments(self, s: str) -> int:
        if len(s) == 0 :
            return (0)
        else:
            return (len(s.split()))

时间复杂度 :O(n)。

这里用到的内置函数(无论是 Java 还是 Python)的时间复杂度或为 O(n),或为O(1) ,故整个算法可以在线性复杂度内完成。

空间复杂度 : {O}(n)。

split 函数 (不管哪种语言) 返回长度为 {O}(n)的数组/列表,故算法使用线性的额外空间。

 

解题思路2:

计算单词的数量,就等同于计数单词开始的下标个数。因此,只需要定义好下标的条件,就可以遍历整个字符串,检测每个下标。定义如下:若该下标前为空格(或者为初始下标),且自身不为空格,则其为单词开始的下标。该条件可以以常数时间检测。最后,返回满足条件的下标个数。

不在首位的一个空格对应一个单词。

class Solution:
    def countSegments(self, s: str) -> int:
        num = 0
        for i in range(len(s)):
            if (i ==0 or s[i]==' ' ) and s[i-1] != ' ':
                num += 1
        return num

时间复杂度 : O(n)。

对每个下标进行常数时间的检测。

空间复杂度 : {O(1)。

只使用了额外的几个整数,因此使用的空间为常数。

 

posted @ 2021-06-22 09:27  LLLLgR  阅读(59)  评论(0编辑  收藏  举报