数据结构与算法

栈--逆波兰式求值

2020-01-08  本文已影响0人  暮想sun

根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, ✖️, ÷ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
例:输入: ["2", "1", "+", "3", "x"] 输出: 9 解释: ((2 + 1) * 3) = 9
思路:循环遍历数字入栈。遇到运算符,出栈两个数字。计算后的结果入栈

public int evalRPN(String[] tokens) {
      
        Stack<Integer> stack = new Stack<>();

        for (int i = 0; i < tokens.length; i++) {

            if ("+".equals(tokens[i])) {

                stack.push(stack.pop() + stack.pop());
            } else if ("-".equals(tokens[i])) {
                int num= stack.pop();
                stack.push(stack.pop() - num);
            } else if ("*".equals(tokens[i])) {

                stack.push(stack.pop() * stack.pop());
            } else if ("/".equals(tokens[i])) {
                int num= stack.pop();
                stack.push(stack.pop() / num);
            } else {
                stack.push(Integer.parseInt(tokens[i]));

            }
        }
        return stack.pop();  
    }
上一篇 下一篇

猜你喜欢

热点阅读