LeetCode第150题 逆波兰表达式求值

根据逆波兰表示法,求表达式的值。

有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

说明:

整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 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 }

猜你喜欢

转载自www.cnblogs.com/rainbow-/p/10495402.html
今日推荐