題目描述:
代碼實現:
- 關鍵在於理解題意,運用棧存儲數字,遍歷到運算符,則取棧頂兩個元素運算即可。
- 時間複雜度:O(n)
var evalRPN = function(tokens) {
var calculate = (s1, s2, char) => {
switch (char) {
case "+":
return s1 + s2
case "-":
return s1 - s2
case "*":
return s1 * s2
case "/":
return Math.trunc(s1 / s2)
}
}
var stack = []
var res = 0
for (var i = 0; i < tokens.length; i++ ) {
if (tokens[i] === "+" || tokens[i] === "-" || tokens[i] === "*" || tokens[i] === "/") {
var s2 = stack.pop(),
s1 = stack.pop()
res = calculate(Number(s1), Number(s2), tokens[i])
stack.push(res)
} else {
stack.push(tokens[i])
}
}
return stack.pop()
}