ホームページ  >  記事  >  データベース  >  LeetCode 2 Evaluate Reverse Polish Notation

LeetCode 2 Evaluate Reverse Polish Notation

WBOY
WBOYオリジナル
2016-06-07 15:42:561392ブラウズ

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, *] - ((21)*3) - 9 [4, 13, 5, /, ] - (4 (13 / 5)) - 6 分析:

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();
    }
}</integer></integer>


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。