考察 Stak.
思路:
每当遇到运算符,则抛出两个栈顶元素
特别处理 -
和 /
, 第二个栈顶元素减去 -
或除以 /
栈顶元素.
如果为数字,则入栈
最终栈中仅有一个元素,即为结果
class Solution {
public int evalRPN(String[] tokens) {
Deque<Integer> stk = new LinkedList<>();
for (String s : tokens) {
if (s.equals("+")) {
stk.push(stk.pop() + stk.pop());
} else if (s.equals("-")) {
stk.push(-stk.pop() + stk.pop());
} else if (s.equals("*")) {
stk.push(stk.pop() * stk.pop());
} else if (s.equals("/")) {
int t1 = stk.pop();
int t2 = stk.pop();
stk.push(t2 / t1);
} else {
stk.push(Integer.valueOf(s));
}
}
return stk.pop();
}
}