定义一个队栈,每次出现一个数放进栈中,若出现运算符的话,就将栈顶的两个元素出栈进行运算后在放入栈 考虑特殊情况 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();
}
};