求逆波兰表达式的值

    xiaoxiao2021-03-25  110

    问题描述:

     

    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

     

     

    用逆波兰表示法计算算术表达式的值。             

    有效运算符为+-*/。每个操作数可以是整数或另一个表达式

     

     

    问题解决(c\c++):

    class Solution {

    public:

        int evalRPN(vector<string> &tokens) {

            stack<int> mystack;

            int size = tokens.size();

            int i = 0;

            for(; i< size; i++){

                if(tokens[i] == "+"){

                        a = mystack.top();

                        mystack.pop();

                        b = mystack.top() + a;

                        mystack.pop();

                        mystack.push(b);

                }

                else if(tokens[i] == "-"){

                        a = mystack.top();

                        mystack.pop();

                        b = mystack.top() - a;

                        mystack.pop();

                        mystack.push(b);

                }

                else if(tokens[i] == "*"){

                        a = mystack.top();

                        mystack.pop();

                        b = mystack.top() * a;

                        mystack.pop();

                        mystack.push(b);

                }

                else if(tokens[i] == "/"){

                        a = mystack.top();

                        mystack.pop();

                        b = mystack.top() / a;

                        mystack.pop();

                        mystack.push(b);

                }

                else{

                    temp = atoi(tokens[i].c_str());

                    mystack.push(temp);

                }

            }

            return mystack.top();

        }

     public:

        int a;

        int b;

        int temp;

        

    };

    转载请注明原文地址: https://ju.6miu.com/read-16951.html

    最新回复(0)