LeetCode224 基本計算器(棧)

2022-06-25 21:12:09 字數 1918 閱讀 7054

解題思路:

1、雙棧模擬,乙個用來存數,乙個用來存操作符。需要考慮 '('後面緊跟'+'、'-'這種情況

2、遞迴:遇到左括號開始遞迴,遇到右括號結束遞迴,返回值。

1

class

solution:

2def

calculate(self, s):

3 s = '

('+s+')'

4 stack =

5 op =

6 val =0

7 flag =false

8for i in

range(len(s)):

9if ord('

0')<=ord(s[i])<=ord('9'

):10 val=val*10+ord(s[i])-ord('0'

)11 flag=true

12elif s[i]=='('

:(')

(')15

elif s[i]==')'

:16ifflag:

1718 flag =false

19 val =0

20 ans =0

21while op[-1]!='('

and stack[-1]!='('

:22if op[-1]=='+'

:23 ans = ans + stack[-1]

24elif op[-1]=='-'

:25 ans = ans - stack[-1]

26 _,_=stack.pop(),op.pop()

2728

if op[-1]=='('

and stack[-1]=='('

:29 _ =op.pop(),stack.pop()

30elif op[-1]=='('

:31 ans+=stack[-1]

32 _ =stack.pop()

33 _ =op.pop(), stack.pop()

34else:35

print('

error')

36exit()

3738

elif s[i]=='+'

:39ifflag:

4041 flag=false

42 val =0+'

)44elif s[i]=='-'

:45ifflag:

4647 flag =false

48 val=0-'

)50elif s[i]=='':

51continue

52return stack[-1]

53 s = solution().calculate("

0+0+(-0+0)")

54print(s)

leetcode 224 基本計算器

題目 基本計算器 實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式可以包含左括號 右括號 加號 減號 非負整數和空格 示例1 輸入 1 1 輸出 2 示例2 輸入 2 1 2 輸出 3 示例3 輸入 1 4 5 2 3 6 8 輸出 23 說明 c include include cl...

leetcode 224 基本計算器

實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式可以包含左括號 右括號 加號 減號 非負整數和空格 示例 1 輸入 1 1 輸出 2 示例 2 輸入 2 1 2 輸出 3 示例 3 輸入 1 4 5 2 3 6 8 輸出 23 採用雙棧法,設立乙個資料棧和乙個操作符棧,在遍歷字串的過程...

Leetcode 224基本計算器

邏輯先寫第三步再寫第二步,思考時要按照表示式順序先看數字再看右括號正常考慮,時間複雜度o n class solution intcalculate string s else 遇到數字 nums.push n 處理多位數等價寫法 while j s.size isdigit s j j j i c...