Leetcode 150 逆波蘭表示式求值

2021-10-22 17:18:15 字數 1412 閱讀 7583

題目鏈結

根據逆波蘭表示法,求表示式的值。

有效的算符包括 +、-、*、/ 。每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。

整數除法只保留整數部分。

給定逆波蘭表示式總是有效的。換句話說,表示式總會得出有效數值且不存在除數為 0 的情況。

輸入:tokens = ["2","1","+","3","*"]

輸出:9

解釋:該算式轉化為常見的中綴算術表示式為:((2 + 1) * 3) = 9

輸入:tokens = ["4","13","5","/","+"]

輸出:6

解釋:該算式轉化為常見的中綴算術表示式為:(4 + (13 / 5)) = 6

輸入:tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]

輸出:22

解釋:該算式轉化為常見的中綴算術表示式為:

((10 * (6 / ((9 + 3) * -11))) + 17) + 5

= ((10 * (6 / (12 * -11))) + 17) + 5

= ((10 * (6 / -132)) + 17) + 5

= ((10 * 0) + 17) + 5

= (0 + 17) + 5

= 17 + 5

= 22

簡單棧操作,用乙個數字棧存所有數字,每碰到乙個運算子,就從棧中取兩個數計算出乙個結果再存到棧裡,最後返回棧頂即可,ac**如下:

class

solution

:def

evalrpn

(self, tokens: list[

str])-

>

int:

num =

for i in tokens:

if i !=

'+'and i !=

'-'and i !=

'*'and i !=

'/':

int(i)

)else

: a = num[-1

] num.pop(

) b = num[-1

] num.pop(

)if i ==

'+':

elif i ==

'-':

elif i ==

'/':

int(b / a)

)elif i ==

'*':

return num[-1

]

LeetCode 150 逆波蘭表示式

根據 逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 整數除法只保留整數部分。給定逆波蘭表示式總是有效的。換句話說,表示式總會得出有效數值且不存在除數為 0 的情況。示例 1 輸入 2 1 3 輸出 9 解釋 該算式轉化為常見的中綴算術表示式為...

leetcode 150 逆波蘭表示式求值

根據逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 示例 1 輸入 2 1 3 輸出 9 解釋 2 1 3 9示例 2 輸入 4 13 5 輸出 6 解釋 4 13 5 6從前往後遍歷陣列,遇到數字則壓入棧中,遇到符號,則把棧頂的兩個數字拿出來...

LeetCode 150 逆波蘭表示式求值

根據逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 整數除法只保留整數部分。給定逆波蘭表示式總是有效的。換句話說,表示式總會得出有效數值且不存在除數為 0 的情況。示例 1 輸入 2 1 3 輸出 9 解釋 2 1 3 9 示例 2 輸入 4 ...