Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, /. Each operand may be an integer or another expression.
Some examples:
  ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
  ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6


Subscribe to see which companies asked this question.

题意:求逆波兰表达式的结果

public class Solution {
    public int isopnd(String s){
        if(s.length()!=1)return 0;
            char c=s.charAt(0);
            switch(c){
                case '+': return 1;
                case '-': return 2;
                case '*': return 3;
                case '/': return 4;
                default:return 0;
            }
        }
    public int evalRPN(String[] tokens) {
        if(tokens.length==1) return Integer.valueOf(tokens[0]);
        Stack<Integer> stack=new Stack<Integer>();
        int ans=0;
        for(String tk : tokens){
            int op=isopnd(tk);
            if(op!=0){
            int a=stack.peek();
            stack.pop();
            int b=stack.peek();
            stack.pop();
            if(op==1){
                ans=a+b;
            }
            if(op==2){
                ans=b-a;
            }
            if(op==3){
                ans=a*b;
            }
            if(op==4){
                ans=b/a;
            }
            System.out.println(ans);
            stack.push(ans);
        }else{
            stack.push(Integer.valueOf(tk));
        }
        }
        return ans;
    }
}

PS:用栈。第一次调用栈。遇到数字,入栈,遇到运算符,出栈俩数字做计算,结果再入栈。