150. Evaluate Reverse Polish Notation

来源:互联网 发布:软件界面显示不全 编辑:程序博客网 时间:2024/06/03 13:20

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
用stack解题。遍历字符串数组,如果是符号,从stack里弹出两个数进行对应的计算,如果是数字,转化成对应值之后入栈,最后结果返回stack的仅存的一个数。代码如下:

public class Solution {    public int evalRPN(String[] tokens) {        if(tokens.length == 0) {            return 0;        }        Stack<Integer> stack = new Stack<Integer>();        int num1 = 0, num2 = 0;        for (String str: tokens) {            if (str.equals("+")) {                num2 = stack.pop();                num1 = stack.pop();                stack.push(num1 + num2);            } else if (str.equals("-")) {                num2 = stack.pop();                num1 = stack.pop();                stack.push(num1 - num2);            } else if (str.equals("*")) {                num2 = stack.pop();                num1 = stack.pop();                stack.push(num1 * num2);            } else if (str.equals("/")) {                num2 = stack.pop();                num1 = stack.pop();                stack.push(num1 / num2);            } else {                stack.push(Integer.parseInt(str));            }        }        return stack.pop();    }}

0 0
原创粉丝点击