大致思路
计算后缀表达式
这题比较简单,还没考虑加括号的情况。
为了鲁棒性,要在运算和程序末尾注意stack的size.
另外学到了一个c++里string转int的方法:
int n = atoi("5".c_str());
AC代码:
stack<int> number;
int cal(int a,int b,string op)
{
if(op=="+")
return a+b;
if(op=="-")
return a-b;
if(op=="*")
return a*b;
if(op=="/")
return a/b;
}
int evalRPN(vector<string> &tokens) {
//采用栈来计算后缀表达式
for(int i=0;i<tokens.size();i++)
{
if(tokens[i]!="+"&&tokens[i]!="-"&&tokens[i]!="*"&&tokens[i]!="/")
{
number.push(atoi(tokens[i].c_str()));//string转Int
}
else //是符号,直接弹栈、运算
{
if((int)number.size()<2)
return 0;
int a=number.top();
number.pop();
int b=number.top();
number.pop();
int c= cal(a,b,tokens[i]);
number.push(c);
}
}
if((int)number.size()>1) return 0;
return number.top();
}