首页 > 试题广场 >

后缀表达式求值

[编程题]后缀表达式求值
  • 热度指数:132728 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
计算逆波兰式(后缀表达式)的值
运算符仅包含"+","-","*"和"/",被操作数是整数

保证表达式合法,除法时向下取整。

数据范围:表达式的长度满足:
进阶:空间复杂度 , 时间复杂度
例如:
  ["20", "10", "+", "30", "*"] -> ((20 + 10) * 30) -> 900
  ["40", "130", "50", "/", "+"] -> (40 + (130 / 50)) -> 42
示例1

输入

["20","10","+","30","*"]

输出

900
示例2

输入

["20"]

输出

20
我真的无语了,这个错在哪里?
      function evalRPN(tokens) {
            // write code here
            const stack = [];
            for (let i = 0; i < tokens.length; i++) {
                const d = tokens[i];
                if (isNaN(d)) {
                    let n2 = stack.pop();
                    let n1 = stack.pop();
                    switch (d) {
                        case '+':
                            stack.push(n1 + n2)
                            break;
                        case '-':
                            stack.push(n1 - n2)

                            break;
                        case '*':
                            stack.push(n1 * n2)
                            break;
                        case '/':
                            stack.push(Math.floor(n1 / n2))
                            break;
                        default:
                            break;
                    }
                } else {
                    stack.push(parseInt(d));
                }
            }
            return stack.pop()
        }


发表于 2022-07-12 14:07:18 回复(0)