Evaluate Reverse Polish Notation

定义一个队栈,每次出现一个数放进栈中,若出现运算符的话,就将栈顶的两个元素出栈进行运算后在放入栈
考虑特殊情况
1.只有一个数字的时候
2.出现负数的情况

class Solution

{

public:

    int evalRPN(vector<string> &tokens)

    {

       // if(tokens.size()==1) return tokens[0];

        stack<int>S;

        for(int i=0; i<tokens.size(); i++)

        {

            if(!(tokens[i][0]>=0 && tokens[i][0]<=9))

            {

                if((tokens[i][0]>='0' && tokens[i][0]<='9'))

                {

                    int n;

                    sscanf(tokens[i],"%d",&n);

                    S.push(n);

                }

                else if(!(tokens[i][0]>='0' && tokens[i][0]<='9') && (tokens[i][1]>='0' && tokens[i][1]<='9'))

                {

                    int n;

                    sscanf(tokens[i],"%d",&n);

                    S.push(n);

                }

                else

                {

                    int n,m;

                    m=S.top();S.pop();

                    n=S.top();S.pop();

                    switch(tokens[i][0])

                    {

                    case '+':S.push(m+n);break;

                    case '-':S.push(n-m);break;

                    case '*':S.push(n*m);break;

                    case '/':S.push(n/m);break;

                    }

                }

            }

        }

        return S.top();

    }

};

  

你可能感兴趣的:(eval)