需要用栈来解决这一题
比较好做,碰到运算符,就把之前压栈的栈顶两位数取出来进行计算,然后把结果放进栈顶即可,这里又个坑就是,这里数组里面存在的元素都是字符,所以需要将数字字符转成数字
var evalRPN = function (tokens) {
let stack = []
for (let i = 0; i < tokens.length; ++i) {
if (['+', '-', '*', '/'].includes(tokens[i])) {
let later = stack.pop()
let former = stack.pop()
let tmp = 0
switch (tokens[i]) {
case '+':
tmp = former + later;
break;
case '-':
tmp = former - later;
break;
case '*':
tmp = former * later;
break;
case '/':
tmp = Math.trunc(former / later);
break;
}
stack.push(tmp)
} else {
stack.push(Number(tokens[i]))
}
}
return stack.pop()
};