1. 程式人生 > 其它 >每日leetcode-陣列-434. 字串中的單詞數

每日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)。

只使用了額外的幾個整數,因此使用的空間為常數。