
逆波兰表达式就是后缀表达式。
算法思想,借助栈来实现,当我们遇到操作符时,连续出栈 2 个元素(先出来的是 b,后出来的是 a),这两个元素和操作符进行运算之后的结果压入堆栈。而如果遇到的是数字字符串,那么就利用 Integer.parseInt() 方法将这个字符串转换成数值。最终栈顶元素就是后缀表达式的值。
class Solution {public int evalRPN(String[] tokens) {Stack<Integer> stack = new Stack<>();for(String token : tokens) {if(isOperator(token)) {int b = stack.pop();int a = stack.pop();stack.push(calculate(a, b, token)); } else {stack.push(Integer.parseInt(token));// 将字符转换为整数}}return stack.pop(); }private int calculate(int a, int b, String operator) {switch(operator) {case "+":return a + b;case "-":return a - b;case "*":return a * b;case "/":return a / b;default:throw new IllegalArgumentException("Invalid operator: " + operator);}}private boolean isOperator(String token) {return "+-*/".contains(token);}
}
