偷个懒用eval 不想去判断符号

后缀表达式求值

http://www.nowcoder.com/questionTerminal/22f9d7dd89374b6c8289e44237c70447

function evalRPN(tokens) {
  // write code here
  let flag = ['+', '-', '*', '/'];
  var res = [];
  let sum = 0;
  for (let i = 0; i < tokens.length; i++) {
    let index = flag.indexOf(tokens[i]);
    if (index !== -1) {
      let r1 = res.pop();
      let r2 = res.pop();
      let opr = flag[index];
      sum = eval(`${r2}${opr}(${r1})`);
      res.push(parseInt(sum+''))
    } else {
      res.push(tokens[i]);
    }
  }
   return res.pop();

}
全部评论
但是效率会比较低,indexOf()应该每次都会遍历flag数组, 会很慢,就是为了偷个懒
点赞 回复 分享
发布于 2020-11-01 22:52
不用eval ,parseInt 改成Math.floor 都一定会报错,是啥原因
点赞 回复 分享
发布于 2022-07-12 14:31

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务