每日leetcode-陣列-434. 字串中的單詞數
阿新 • • 發佈:2021-06-22
分類:字串 - 單詞
題目描述:
統計字串中的單詞個數,這裡的單詞指的是連續的不是空格的字元。
請注意,你可以假定字串裡不包括任何不可列印的字元。
解題思路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 = 0for i in range(len(s)): if (i ==0 or s[i]==' ' ) and s[i-1] != ' ': num += 1 return num
時間複雜度 : O(n)。
對每個下標進行常數時間的檢測。
空間複雜度 : {O(1)。
只使用了額外的幾個整數,因此使用的空間為常數。