剑指 Offer II 036. 后缀表达式

138 阅读1分钟

剑指 Offer II 036. 后缀表达式

经典使用栈的题目

  • 遍历数组,让数字入栈,遇到加减乘除的就出战两个数,并且将计算结果放入栈中
  • 这里需要注意一下就是,正数的浮点数需要向下取整,负数的浮点数要向上取整

代码实现

var evalRPN = function (arr) {
  var stack = [];
  var len = arr.length;
  for (var i = 0; i < len; i++) {
    var item = arr[i];
    if (!["+", "-", "*", "/"].includes(item)) {
      stack.push(parseInt(item));
    } else {
      var p2 = stack.pop();
      var p1 = stack.pop();
      if (item === "+") {
        stack.push(p1 + p2);
      } else if (item === "-") {
        stack.push(p1 - p2);
      } else if (item === "*") {
        stack.push(p1 * p2);
      } else if (item === "/") {
        stack.push(p1 / p2 > 0 ? Math.floor(p1 / p2) : Math.ceil(p1 / p2));
      }
    }
  }
  return stack.pop();
};