題目連結:
題目意譯:
請計算一個反波蘭記法(Reverse Polish Notation,RPN)的算術運算式之值。
合法的運算子為「+」、「-」、「*」和「/」。每個運算元為一個整數或是另一個運算式。
注意其中的兩整數間的除法應往 0 截斷。
保證給定的 RPN 運算式永遠合法。意即運算式永遠可以得到一結果值,且不含任何除以 0 之除法操作。
限制:
1 ≦ tokens.length ≦ 10 ^ 4
tokens[i] 只會是一個運算子: "+" 、 "-" 、 "*" 或是 "/",或是一個整數於範圍 [-200, 200] 中。
範例測資:
範例 1:
輸入: tokens = ["2","1","+","3","*"]
輸出: 9
解釋: ((2 + 1) * 3) = 9
範例 2:
輸入: tokens = ["4","13","5","/","+"]
輸出: 6
解釋: (4 + (13 / 5)) = 6
範例 3:
輸入: 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
解題思維:
反波蘭記法是後序運算式的另一個別稱。因此直接參見
這題的作法即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。