原题链接:150. 逆波兰表达式求值 - 力扣(LeetCode)
解决思路:
这道题其实就有点做计算题的感觉,其实就是一个栈存放操作数,然后遇到数字就入操作数栈,遇到字符就将栈中头两个元素取出进行运算,然后将运算结果入栈,重复直到操作数栈为空。
完整代码:
class Solution {
public int evalRPN(String[] tokens) {
Deque<Integer> stack = new LinkedList<Integer>();
int n = tokens.length;
for (int i = 0; i < n; i++) {
String token = tokens[i];
if (isNumber(token)) {
stack.push(Integer.parseInt(token));
} else {
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(num1 / num2);
break;
default:
}
}
}
return stack.pop();
}
public boolean isNumber(String token) {
return !("+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token));
}
}