leetcode150-逆波兰表达式求值
- 创业
- 2025-08-26 17:39:02

leetcode 150
思路本题使用栈来解决,因为符号是在数字的后面,所以一开始有数字出现的时候我们先入栈,后续遇到有符号,就出栈两个数字,让后出栈的数字作为前一位运算符,先出栈的数字作为后一位运算符,进行加减乘除的操作,操作完成后,需要把当前运算结果再次入栈,因为结果是会拿来做下一次运算的,需要注意的是,除法操作过程中,可能出现小数的情况,我们需要使用parseInt操作符来进行取整,另外stack在存储的时候不能存字符串,因为字符串相加会直接拼接,而不是进行加分运算,所以存储时需要转为数字存储 例子:tokens = [“2”,“1”,“+”,“3”,“*”] 1: stack = [2] 2: stack = [2,1] 3: 匹配到+, 需要计算2 + 1 = 3 stack = [3] 4: stack = [3,3] 5: 匹配到 乘法, 3*3 = 9 stack = [9]
实现 var evalRPN = function (tokens) { let stack = []; let symbols = ['+', '-', '*', '/'] for (const item of tokens) { if (symbols.includes(item)) { const num1 = stack.pop(); const num2 = stack.pop(); if (item === '+') stack.push(num2 + num1) if (item === '-') stack.push(num2 - num1) if (item === '*') stack.push(num2 * num1) if (item === '/') stack.push(parseInt(num2 / num1)) } else { stack.push(Number(item)) } } return stack[0]; };leetcode150-逆波兰表达式求值由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“leetcode150-逆波兰表达式求值”