https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/

http://blog.csdn.net/linhuanmars/article/details/21058857

public class Solution {
    public int evalRPN(String[] tokens) {
        
        // Assumptions...
        
        Stack<Integer> stack = new Stack<>();
        for (String s : tokens)
        {
            if (isop(s))
            {
                int vb = stack.pop();
                int va = stack.pop();
                stack.push(calc(va, vb, s));
            }
            else
            {
                stack.push(Integer.parseInt(s));
            }
        }
        
        return stack.pop();
    }
    
    private boolean isop(String s)
    {
        return s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/");
    }
    
    private int calc(int a, int b, String op)
    {
        if (op.equals("+"))
            return a + b;
        else if (op.equals("-"))
            return a - b;
        else if (op.equals("*"))
            return a * b;
        else
            return a / b;
    }
}