150. 逆波兰表达式求值
解题思路
-
初始化栈:
-
创建一个整数栈用于存储操作数。
-
遍历表达式数组:
-
对于数组中的每个元素:
- 如果是运算符,从栈中弹出两个操作数,并根据运算符进行相应的运算,然后将结果压入栈中。
- 如果是操作数,则直接将其压入栈中。
- 执行运算:
-
当遍历完整个表达式数组后,栈顶元素即为最终的计算结果。
-
返回结果:
- 返回栈顶元素作为最终的计算结果。
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();}
}