我正在尝试在 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。
添加回答
举报
0/150
提交
取消