作者:qianyu2602915863 | 来源:互联网 | 2023-09-25 13:47
题目EvaluatethevalueofanarithmeticexpressioninReversePolishNotation.Validoperatorsare+
题目
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, /. Each operand may be an integer or another expression.
Some examples:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
这里使用Java的栈Stack
Stack stack = new Stack();
stack.pop(); // 移除栈顶元素并返回
stack.peek(); // 查看栈顶元素,但不移除该元素
stack.push(someElement); // 将元素压入栈顶
需要注意pop方法和peek方法的区别
完整Java代码如下:
public static int evalRPN(String[] tokens) {
Stack stack = new Stack();
int a, b;
for(String s : tokens) {
if(s.length() == 1) {
char ch = s.charAt(0);
if(ch == '+') {
b = stack.pop();
a = stack.pop();
stack.push(a + b);
} else if(ch == '-') {
b = stack.pop();
a = stack.pop();
stack.push(a - b);
} else if(ch == '*') {
b = stack.pop();
a = stack.pop();
stack.push(a * b);
} else if(ch == '/') {
b = stack.pop();
a = stack.pop();
stack.push(a / b);
} else {
stack.push(Integer.valueOf(s));
}
} else {
stack.push(Integer.valueOf(s));
}
}
return stack.pop();
}
每天学习进步一点点!