leetcode[150]Evaluate Reverse Polish Notation

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
class Solution {

public:

    int evalRPN(vector<string> &tokens) {

        if(tokens.empty())return INT_MIN;

        stack<int> sta;

        for(auto &tok :tokens)

        {

            if(tok!="+"&&tok!="-"&&tok!="*"&&tok!="/")

            {

                sta.push(atoi(tok.c_str()));

            }

            else 

            {

                int right=sta.top();

                sta.pop();

                int left=sta.top();

                sta.pop();

                int res=0;

                switch(tok[0])

                {

                    case '+':

                         res=left+right;

                         break;

                    case '-':

                         res=left-right;

                         break;

                    case '*':

                         res=left*right;

                         break;

                    case '/':

                         res=left/right;

                         break;

                    defaut  :break;

                }

                sta.push(res);

            }

        }

        return sta.top();

    }

};

 

你可能感兴趣的:(LeetCode)