为了账号安全,请及时绑定邮箱和手机立即绑定

在 JavaScript 中评估反向波兰表示法算法

在 JavaScript 中评估反向波兰表示法算法

牛魔王的故事 2023-06-15 17:36:37
我正在尝试在 JavaScript 中实现反向波兰符号算法。问题:计算反向波兰表示法中算术表达式的值。有效的运算符是 +、-、*、/。每个操作数可以是一个整数或另一个表达式。笔记:两个整数之间的除法应截断为零。给定的 RPN 表达式总是有效的。这意味着表达式将始终计算结果并且不会有任何被零除的操作。例子:Input: ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]Output: 22Explanation:   ((10 * (6 / ((9 + 3) * -11))) + 17) + 5= ((10 * (6 / (12 * -11))) + 17) + 5= ((10 * (6 / -132)) + 17) + 5= ((10 * 0) + 17) + 5= (0 + 17) + 5= 17 + 5= 22我的解决方案:var evalRPN = function(tokens) {    let set = new Set();    set.add('+');    set.add('-');    set.add('/');    set.add('*');        let i = 0;    while(tokens.length > 1) {        if(set.has(tokens[i+2])) {            const result = calculate(parseInt(tokens[i]), parseInt(tokens[i+1]), tokens[i+2]);            tokens.splice(i, 3, result);            i = 0;        } else            i++;    }        return tokens[0];};    const calculate = (left, right, operator) => {    let res;    switch(operator) {        case '+':            res = left + right;            break;        case '-':            res = left - right;            break;        case '*':            res = left * right;            break;        case '/':            res = left / right;            break;    }        return res;}我的代码返回 12,但答案应该是 11。
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

你有要求

两个整数之间的除法应截断为零。

因此,您需要:

case '/':
    res = Math.trunc(left / right);


查看完整回答
反对 回复 2023-06-15
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信