力扣150题(逆波兰表达式求值)

150、逆波兰表达式求值

 

代码:

class Solution {
    public int evalRPN(String[] tokens) {
        Deque<Integer> stack = new LinkedList();
        for (String token : tokens) {
            char c = token.charAt(0);
            if (!isOpe(token)) {//不是运算符
                stack.addFirst(stoi(token));
            } else if (c == '+'){
                stack.push(stack.pop() + stack.pop());
            } else if (c == '*'){
                stack.push(stack.pop() * stack.pop());
            } else if (c == '-'){
                stack.push(-stack.pop() + stack.pop());
            } else {
                int num1 = stack.pop();
                int num2 = stack.pop();
                stack.push(num2/num1);
            }
        }
        return stack.pop();
    }

    private boolean isOpe(String s){//判断是否是运算符
        return s.length() == 1 && s.charAt(0) < '0' || s.charAt(0) > '9';
    }

    private int stoi(String s){
        return Integer.valueOf(s);
    }
}
原文地址:https://www.cnblogs.com/zhaojiayu/p/15505733.html