Q:计算逆波兰式(后缀表达式)的值
运算符仅包含"+","-","*"和"/",被操作数可能是整数或其他表达式
例如:

["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9↵ ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

A:使用栈,碰到符号就跳出来两个值计算再压入结果

import java.util.Stack;
    public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack();
        for (int i = 0; i < tokens.length; i++) {
            try {
                int num = Integer.parseInt(tokens[i]);
                stack.push(num);
            } catch (Exception e) {
                int a = stack.pop();
                int b = stack.pop();
                if (tokens[i].equals("+"))
                    stack.push(a + b);
                else if (tokens[i].equals("-"))
                    stack.push(b - a);
                else if (tokens[i].equals("*"))
                    stack.push(a * b);
                else if (tokens[i].equals("/"))
                    stack.push(b / a);
            }
        }
        return stack.pop();
    }

相关文章:

  • 2022-01-18
  • 2022-02-04
  • 2021-05-21
  • 2021-06-09
  • 2021-07-23
  • 2021-06-14
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-31
  • 2022-12-23
  • 2021-07-23
  • 2022-12-23
  • 2021-10-16
相关资源
相似解决方案