根据逆波兰表示法,求表达式的值。
有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
说明:
整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
1 class Solution150 {
2
3 public int evalRPN(String[] tokens) {
4 Stack<Integer> numberStack = new Stack<>();
5 for (String token : tokens) {
6 switch (token) {
7 case "+":
8 case "-":
9 case "*":
10 case "/":
11 int firstPopNumber = numberStack.pop();
12 int secondPopNumber = numberStack.pop();
13 numberStack.push(getResult(token, firstPopNumber, secondPopNumber));
14 break;
15 default:
16 numberStack.push(Integer.valueOf(token));
17 }
18 }
19 return numberStack.pop();
20 }
21
22 private int getResult(String symbol, int firstPopNumber, int secondPopNumber) {
23 switch (symbol) {
24 case "+":
25 return secondPopNumber + firstPopNumber;
26 case "-":
27 return secondPopNumber - firstPopNumber;
28 case "*":
29 return secondPopNumber * firstPopNumber;
30 case "/":
31 return secondPopNumber / firstPopNumber;
32 default:
33 return 0;
34 }
35 }
36 }