Heim  >  Artikel  >  Datenbank  >  LeetCode 2 Evaluate Reverse Polish Notation

LeetCode 2 Evaluate Reverse Polish Notation

WBOY
WBOYOriginal
2016-06-07 15:42:561392Durchsuche

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>


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn