leetcode-简单-栈-逆波兰表达式

根据逆波兰表示法,求表达式的值。
有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
说明:

 整数除法只保留整数部分。
 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/evaluate-reverse-polish-notation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<>();
        int len = tokens.length;
        int ans = 0;
        Integer op1, op2;
        ArrayList<String> list =new ArrayList<>(Arrays.asList("+","-","*","/"));
        for(int i = 0; i < len; i++){
            if(list.contains(tokens[i])){
                if(!stack.empty()){
                    op1 = stack.pop();
                    if(!stack.empty()){
                        op2 = stack.pop();
                        switch (tokens[i]){
                            case "+":
                                stack.push(op1+op2);
                                break;
                            case "-":
                                stack.push(op2-op1);
                                break;
                            case "*":
                                stack.push(op2*op1);
                                break;
                            case "/":
                                try{
                                    stack.push(op2/op1);
                                }catch (Exception e){
                                    e.printStackTrace();
                                }
                        }
                    }
                }
            }else{
                stack.push(Integer.valueOf(tokens[i]));
            }
        }
        return stack.pop();
    }
}

   

猜你喜欢

转载自www.cnblogs.com/buaaZhhx/p/12378316.html