LeetCode 150. Java-逆波兰表达式求值
原题链接
中等
作者:
zlnnjit
,
2021-03-20 00:53:41
,
所有人可见
,
阅读 322
栈解法
class Solution {
public int evalRPN(String[] tokens) {
Deque<Integer> deque = new ArrayDeque<>();
for (String token : tokens) {
if (isNumber(token)) {
deque.addLast(Integer.valueOf(token));
} else {
int b = deque.pollLast();
int a = deque.pollLast();
deque.add(cal(a, b, token));
}
}
return deque.pollLast();
}
private Integer cal(int a, int b, String token) {
if (token.equals("+")) return a + b;
if (token.equals("-")) return a - b;
if (token.equals("*")) return a * b;
return a / b;
}
private boolean isNumber(String token) {
return !(token.equals("+") || token.equals("-") || token.equals("*") || token.equals("/"));
}
}