zoukankan      html  css  js  c++  java
  • 每日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)。

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

  • 相关阅读:
    JAVAEE网上商城项目总结
    色盲小游戏
    jQuery(动画效果)
    Oracle exp,imp,expdp,impdp数据导入导出
    Sysbench压力测试工具简介和使用(二)
    Sysbench压力测试工具简介和使用(一)
    Eclipse常用快捷键汇总
    常用数据库连接URL地址大全
    H2数据库使用
    DbVisualizer 解决中文乱码问题
  • 原文地址:https://www.cnblogs.com/LLLLgR/p/14917025.html
Copyright © 2011-2022 走看看