LCR 036. 逆波兰表达式求值
解题思路
-
初始化栈:
-
创建一个整数栈用于存储操作数。
-
遍历表达式数组:
-
对于数组中的每个元素:
- 如果是运算符,从栈中弹出两个操作数,并根据运算符进行相应的运算,然后将结果压入栈中。
- 如果是操作数,则直接将其压入栈中。
- 执行运算:
-
当遍历完整个表达式数组后,栈顶元素即为最终的计算结果。
-
返回结果:
- 返回栈顶元素作为最终的计算结果。
class Solution {
public int evalRPN(String[] tokens) {
Stack<Integer> s = new Stack<>();
for(int i = 0; i < tokens.length; i++){
// 遇到运算符 出栈两个操作数
if("+".equals(tokens[i])){
s.push(s.pop() + s.pop());// 操作数出栈
}else if("-".equals(tokens[i])){
int t1= s.pop();
int t2 = s.pop();
s.push(t2 - t1);
}else if("*".equals(tokens[i])){
s.push(s.pop() * s.pop());
}else if("/".equals(tokens[i])){
int t1 = s.pop();
int t2 = s.pop();
s.push(t2/ t1);
}else {
s.push(Integer.valueOf(tokens[i]));
}
}
return s.pop();
}
}