根據逆波蘭表示法,求表示式的值。有效的運算子包括
+
,-
,*
,/
。每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明:
整數除法只保留整數部分。
給定逆波蘭表示式總是有效的。換句話說,表示式總會得出有效數值且不存在除數為 0 的情況。
輸入:["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
模擬法:構建乙個棧模擬逆波特蘭的運算。
遍歷符號列表:當符號是數字時加入棧,當符號是運算子時,出棧兩個元素進行運算。這裡注意後出棧的元素為左值,先出棧的元素為右值。
python
class solution:
def evalrpn(self, tokens):
s =
ops = set("/*+-")
for token in tokens:
if token in ops:
r, l = s.pop(), s.pop()
else:
return int(s[0]) if s else 0
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 ...