根據逆波蘭表示法,求表示式的值。
有效的運算子包括 +, -, , / 。每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。
說明:整數除法只保留整數部分。
給定逆波蘭表示式總是有效的。換句話說,表示式總會得出有效數值且不存在除數為 0 的情況。
示例 1:
輸入: [「2」, 「1」, 「+」, 「3」, ""]
輸出: 9
解釋: ((2 + 1) * 3) = 9
示例 2:
輸入: [「4」, 「13」, 「5」, 「/」, 「+」]
輸出: 6
解釋: (4 + (13 / 5)) = 6
示例 3:
輸入: [「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
用乙個list記錄數字和計算結果,出現符號就計算:
class
solution
:def
evalrpn
(self, tokens: list[
str])-
>
int:
res =
for token in tokens:
if token in
['+'
,'-'
,'*'
,'/']:
a, b = res.pop(-1
), res.pop(-1
)# 後,前
str(
int(
eval
(b+token+a)))
)else
:return
int(res[-1
])
class
solution
:def
evalrpn
(self, tokens)
->
int:
res =
for token in tokens:
if token in
['+'
,'-'
,'*'
,'/']:
a, b = res.pop(-1
), res.pop(-1
)# 後,前
if token ==
'+':
elif token ==
'-':
elif token ==
'*':
else
:int
(b/a)
)else
:int
(token)
)return res[-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 ...