Leetcode 括號的分數 棧

2021-10-13 05:01:16 字數 1204 閱讀 2380

leetcode: 856. 括號的分數

給定乙個平衡括號字串 s,按下述規則計算該字串的分數:() 得 1 分。ab 得 a + b 分,其中 a 和 b 是平衡括號字串。(a) 得 2 * a 分,其中 a 是平衡括號字串。

python**實現:

class

solution

(object):

defscoreofparentheses

(self, s)

: ans, deep =0,

0for i, x in

enumerate

(s):

if x ==

'(':

deep +=

1else

: deep -=

1if s[i-1]

=='('

: ans +=

1<< deep

return ans

時間複雜度:o(n) ,其中 n 是字串 s 的長度。

空間複雜度:o(1)。

python**實現:

class

solution

:def

scoreofparentheses

(self, s:

str)

->

int:

count =

0 stack =[0

]#the score of the current frame

for x in s:

if x ==

'(':0)

else

: count = stack.pop(

) stack[-1

]+=1if count ==

0else

2*count

return stack.pop(

)

時間複雜度:o(n),其中 n是字串 s 的長度。

空間複雜度:o(n),為棧的大小。

LeetCode 括號的分數 856

給定乙個平衡括號字串s,按下述規則計算該字串的分數 示例 1 輸入 輸出 1 示例 2 輸入 輸出 2 示例 3 輸入 輸出 2 示例 4 輸入 輸出 6 s是平衡括號字串,且只含有 和 2 s.length 50 我們可以使用遞迴來解決這個問題。通過分析題目,我們發現有三種情況 比如 score ...

leetcode 856 括號的分數

給定乙個平衡括號字串s,按下述規則計算該字串的分數 示例 1 輸入 輸出 1示例 2 輸入 輸出 2示例 3 輸入 輸出 2示例 4 輸入 輸出 6 s是平衡括號字串,且只含有 和 2 s.length 50 很明顯,這一題可以用棧來解決。我們把單獨乙個左括號算作0分,遍歷字串s,遇到左括號就直接算...

leetcode 856 括號的分數

給定乙個平衡括號字串s,按下述規則計算該字串的分數 得 1 分。ab得a b分,其中 a 和 b 是平衡括號字串。a 得2 a分,其中 a 是平衡括號字串。示例 1 輸入 輸出 1示例 2 輸入 輸出 2示例 3 輸入 輸出 2示例 4 輸入 輸出 6 模擬棧,遍歷字串s,時入棧,不然出棧,若棧頂元...