题目原文:
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, /. Each operand may be an integer or another expression.
题目大意:
计算逆波兰式的值。
题目分析:
在《数据结构》课的堆栈部分,我们学习过如果求逆波兰式的值,在此复习一下:
初始化一个堆栈,然后遍历逆波兰式数组,如果是操作数则入栈,如果是操作符则把两个操作数弹出来进行运算,运算结果压入堆栈,最终栈中只有一个元素,即表达式的值。
源码:(language:java)
public class Solution {
public int evalRPN(String[] tokens) {
Stack<Integer> stack = new Stack<Integer>();
for(String token : tokens) {
if(token.equals("+") || token.equals("-") || token.equals("*") || token.equals("/")) {
int num1 = stack.pop();
int num2 = stack.pop();
stack.push(operate(num2,token,num1));
}
else
stack.push(Integer.parseInt(token));
}
return stack.peek();
}
private int operate(int a, String op, int b) {
if(op.equals("+"))
return a+b;
else if(op.equals("-"))
return a-b;
else if(op.equals("*"))
return a*b;
else {
return a/b;
}
}
}
成绩:
17ms,beats 39.27%,众数16ms,17.94%
cmershen的碎碎念:
逆波兰式是一种没有括号的,但运算结果唯一的表达式,对计算机来说要比中缀表达式容易理解很多。关于中缀表达式转逆波兰式的算法见百度百科,之前我们的课程设计也做过这个。
本文介绍了一种计算逆波兰表达式的Java实现方法。通过使用堆栈数据结构来处理操作数和运算符,可以有效地计算出逆波兰表达式的值。文章还提供了一个具体的代码示例。
773

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



