本次题目
150 逆波兰表达式求值
- 栈:逆波兰表达式(后缀表达式,相当于二叉树中后序遍历)转为中缀表达式。
- 遍历表达式,将数字直接入栈,遇到运算符号则将栈顶两个元素取出做相应运算(先入栈数在前),然后再将结果入栈,直到遍历结束,栈中元素即为最后结果。
- 注意:字符串相等判断equals()。使用Integer.parseInt()或Integer.valueOf()将String转为int/Integer,前者返回的是int,后者返回的是Integer。
class Solution {
public int evalRPN(String[] tokens) {
Deque<Integer> deque = new LinkedList<>();
for(String t : tokens){
if(t.equals("+")){
deque.push(deque.pop() + deque.pop());
}else if(t.equals("*")){
deque.push(deque.pop() * deque.pop());
}else if(t.equals("-")){
int num1 = deque.pop();
int num2 = deque.pop();
deque.push(num2 - num1);
}else if(t.equals("/")){
int num1 = deque.pop();
int num2 = deque.pop();
deque.push(num2 / num1);
}else{
deque.push(Integer.parseInt(t));
}
}
return deque.pop();
}
}