力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
给你一个字符串数组
tokens
,表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。
注意:
- 有效的算符为
'+'
、'-'
、'*'
和'/'
。- 每个操作数(运算对象)都可以是一个整数或者另一个表达式。
- 两个整数之间的除法总是 向零截断 。
- 表达式中不含除零运算。
- 输入是一个根据逆波兰表示法表示的算术表达式。
- 答案及所有中间计算结果可以用 32 位 整数表示。
题解:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
利用栈的先进后出
代码如下:
class Solution {public int evalRPN(String[] tokens) {Stack<Integer> s = new Stack<>();for(String str : tokens) {if("+".equals(str)) {s.push(s.pop()+s.pop());}else if("-".equals(str)){//先出栈的在运算符第二位s.push(-s.pop() + s.pop());}else if("*".equals(str)) {s.push(s.pop() * s.pop());}else if("/".equals(str)){//先出栈的在运算符第二位int temp1 = s.pop();int temp2 = s.pop();s.push(temp2 / temp1);}else{s.push(Integer.valueOf(str));}}return s.pop();}}