Leetcode 逆波兰表达式求值
逆波兰表达式就是后缀表达式。
算法思想,借助栈来实现,当我们遇到操作符时,连续出栈 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);
}
}
原文地址:https://blog.csdn.net/coldasice342/article/details/143866125
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!