package two;

import java.util.Stack;

/**
 * @author dmrfcoder
 * @date 2019/4/10
 */
public class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> operateStack = new Stack<>();

        int size = tokens.length;


        for (int index = 0; index < size; index += 1) {
            String itemToken = tokens[index];

            if ("+".equals(itemToken) || "-".equals(itemToken) || "*".equals(itemToken) || "/".equals(itemToken)) {
                Integer operate2 = operateStack.pop();
                Integer operate1 = operateStack.pop();
                Integer result = 0;
                switch (itemToken) {
                    case "+":

                        result = operate1 + operate2;
                        break;
                    case "-":

                        result = operate1 - operate2;
                        break;
                    case "*":
                        result = operate1 * operate2;
                        break;
                    case "/":
                        result = (Integer) operate1 / operate2;
                        break;
                    default:
                        break;
                }
                operateStack.push(result);

            } else {
                operateStack.push(Integer.valueOf(itemToken));
            }


        }


        return operateStack.pop();
    }

    public static void main(String[] args) {
        String[] token = {"2","1","+","3","*"};
        Solution solution = new Solution();
        System.out.println(solution.evalRPN(token));
    }
}