【逆波兰表达式】【栈】LeetCode 150. 逆波兰表达式求值
题目链接
思路
从左到右遍历 tokens
遇到数字便放入栈中,遇到运算符便弹出栈顶的两个数字进行运算。
代码
class Solution{
public int evalRPN(String[] tokens){
Stack<Integer> numbers = new Stack<>();
for(String token : tokens){
if(token.equals("+")){
numbers.push(numbers.pop() + numbers.pop());
}else if(token.equals("-")){
numbers.push(-numbers.pop() + numbers.pop());
}else if(token.equals("*")){
numbers.push(numbers.pop() * numbers.pop());
}else if(token.equals("/")){
int n1 = numbers.pop(), n2 = numbers.pop();
numbers.push(n2 / n1);
}else{
numbers.push(Integer.parseInt(token));
}
}
return numbers.pop();
}
}