目录
一、题目描述

二、思路

三、代码实现
class Solution {
public int evalRPN(String[] tokens) {
Stack<Integer> stack = new Stack<>();
for(int i = 0; i < tokens.length; i++){
String val = tokens[i];
if(! isOperator(val)){//不是运算符
stack.push(Integer.parseInt(val));
}else{//判断是什么运算符
int num2 = stack.pop();
int num1 = stack.pop();
switch(val){
case "+":
stack.push(num1 + num2);
break;
case "-":
stack.push(num1 - num2);
break;
case "*":
stack.push(num1 * num2);
break;
case "/":
stack.push(num1 / num2);
break;
}
}
}
return stack.pop();
}
private boolean isOperator(String x){
if(x.equals("+") || x.equals("-") || x.equals("*") || x.equals("/")){
return true;
}
return false;
}
}
该博客主要介绍了如何使用栈数据结构解决逆波兰表达式(后缀表达式)的计算问题。通过遍历输入的令牌数组,将数值压入栈中,并在遇到运算符时弹出栈顶两个元素进行相应运算,最后返回结果。代码中包含了加、减、乘、除四种基本运算。此方法避免了使用括号,简化了表达式的计算过程。
221

被折叠的 条评论
为什么被折叠?



