LeetCode 2 Evaluate Reverse Polish Notation

来源:互联网 发布:剑三高冷成男捏脸数据 编辑:程序博客网 时间:2024/06/05 00:53

Evaluate the value of arithmetic expression in Reverse Polish Notation.

Valid operator 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 class Solution {    public int evalRPN(String[] tokens) {        Stack<Integer> st = new Stack<Integer>();        for(String token : tokens){            if(token.matches("-?[0-9]+")){                st.push(Integer.parseInt(token));            }else{                int num2 = st.pop();                int num1 = st.pop();                if(token.equals("+")){                    st.push(num1+num2);                }else if(token.equals("-")){                    st.push(num1-num2);                }else if(token.equals("*")){                    st.push(num1*num2);                }else if(token.equals("/")){                    st.push(num1/num2);                }            }         }        return st.pop();    }}


0 0