题目描述:
标签:栈
根据 逆波兰表示法,求表达式的值。
有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
说明:
整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况
代码:
思路分析:逆波兰表达式求值
1、建一个栈。
2、利用增强for循环遍历,如果当前字符为数字,则压入栈中;如果当前字符为“+、-、* 、/”运算符,则弹出两个元素进行运算,并将运算结果压入栈中。
3、注意String 和 Integer 之间的 类型转换
class Solution {
public int evalRPN(String[] tokens) {
Stack<Integer> stack = new Stack<>();
for(String s : tokens){
if(s.equals("+")){
stack.push(stack.pop() + stack.pop());
}else if(s.equals("-")){
stack.push(-stack.pop() + stack.pop());
}else if(s.equals("*")){
stack.push(stack.pop() * stack.pop());
}else if(s.equals("/")){
int num1 = stack.pop();
stack.push(stack.pop() / num1);
}else{
stack.push(Integer.parseInt(s));
}
}
return stack.pop();
}
}