leetcode 150 逆波蘭表示式求值

2021-09-17 22:00:18 字數 953 閱讀 2305

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

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

說明:

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

給定逆波蘭表示式總是有效的。換句話說,表示式總會得出有效數值且不存在除數為 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 ...