Evaluate Reverse Polish Notation

来源:互联网 发布:焦作淘宝实体店地 编辑:程序博客网 时间:2024/06/07 18:03

题目

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

方法

    public int evalRPN(String[] tokens) {        int len = tokens.length;    Stack<Integer> stack = new Stack<Integer>();    for (int i = 0; i < len; i++) {    String str = tokens[i];    char ch = str.charAt(0);    if ((ch >= '0' && ch <= '9') || str.length() > 1) {    int num = Integer.parseInt(str);    stack.add(num);    } else {    int num1 = stack.pop();    int num2 = stack.pop();    int num = 0;    switch(ch) {       case '+' :  num = num1 + num2;     stack.add(num);    break;    case '-' :  num = num2 - num1;    stack.add(num);    break;    case '*' :  num = num2 * num1;        stack.add(num);        break;    case '/' :  num = num2 / num1;    stack.add(num);    break;    }    }    }                return stack.peek();    }


0 0
原创粉丝点击