【leetcode】150. 逆波兰表达式求值

44 阅读1分钟

leetcode-150.png

需要用栈来解决这一题
比较好做,碰到运算符,就把之前压栈的栈顶两位数取出来进行计算,然后把结果放进栈顶即可,这里又个坑就是,这里数组里面存在的元素都是字符,所以需要将数字字符转成数字

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()
};