给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。Java完整代码包含主函数
时间: 2024-09-24 10:06:42 浏览: 27
在 Java 中,为了计算逆波兰表示法 (Reverse Polish Notation, RPN) 的算术表达式的值,你可以使用栈这种数据结构。逆波兰表示法的特点是操作符位于其操作数之后,所以遍历输入数组时,遇到数字就压入栈,遇到运算符则弹出两个数执行相应的运算并把结果压回栈。
下面是一个简单的 Java 示例,展示了如何实现这个功能:
```java
import java.util.Stack;
public class Solution {
public int calculate(String[] tokens) {
Stack<Integer> stack = new Stack<>();
for (String token : tokens) {
if (!Character.isDigit(token.charAt(0))) { // 遇到运算符
int num2 = stack.pop();
int num1 = stack.pop();
switch (token) {
case "+":
stack.push(num1 + num2);
break;
case "-":
stack.push(num1 - num2);
break;
case "*":
stack.push(num1 * num2);
break;
case "/":
stack.push((int) Math.floor(num1 / num2)); // 因为除法可能会有小数部分
break;
}
} else { // 遇到数字
stack.push(Integer.parseInt(token));
}
}
return stack.pop(); // 返回最终结果
}
public static void main(String[] args) {
Solution solution = new Solution();
String[] tokens = {"2", "1", "+", "3", "*"}; // 逆波兰表示的表达式 2+1*3
System.out.println(solution.calculate(tokens)); // 输出: 9
阅读全文