AlgoMaster Logo

Evaluate Reverse Polish Notation

tokens=[2, 1, +, 3, *]
1public int evalRPN(String[] tokens) {
2    Stack<Integer> stack = new Stack<>();
3
4    for (int i = 0; i < tokens.length; i++) {
5        String token = tokens[i];
6
7        if (isOperator(token)) {
8            int b = stack.pop();
9            int a = stack.pop();
10            int result = 0;
11
12            switch (token) {
13                case "+":
14                    result = a + b;
15                    break;
16                case "-":
17                    result = a - b;
18                    break;
19                case "*":
20                    result = a * b;
21                    break;
22                case "/":
23                    result = a / b;
24                    break;
25            }
26
27            stack.push(result);
28        } else {
29            stack.push(Integer.valueOf(token));
30        }
31    }
32
33    return stack.pop();
34}
35
36private boolean isOperator(String token) {
37    return token.equals("+") || token.equals("-") ||
38           token.equals("*") || token.equals("/");
39}
0 / 21
21+3*stack