首页 > 代码库 > Evaluate Reverse Polish Notation

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