这道题目同样是栈的一个应用典范。通过读题,非常明显计算就是一个栈的轨迹。遇到运算符出栈,遇到操作数就入栈。。。
class Solution {
public:
int evalRPN(vector<string>& tokens) {
if(tokens.size()==0) return 0;
stack<int> s;
int temp=0;
for(int i=0;i<tokens.size();i++){
if(tokens[i][0]<='9'&&tokens[i][0]>='0'||(tokens[i].size()>1&&tokens[i][0]=='-')){
s.push(atoi(tokens[i].c_str()));
}else{
int a=s.top();
s.pop();
int b=s.top();
s.pop();
if(tokens[i][0]=='+') temp=a+b;
if(tokens[i][0]=='-') temp=b-a;
if(tokens[i][0]=='*') temp=a*b;
if(tokens[i][0]=='/') temp=b/a;
s.push(temp);
}
}
return s.top();
}
};