这道题其实是后缀表达式,用栈做就很简单
每遇到一个数组,放入stack,每遇到一个运算符,pop两个变量用于计算,结果push入栈
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int>s;
for(int i=0;i<tokens.size();++i){
if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/"){
int x2=s.top();
s.pop();
int x1=s.top();
s.pop();
int x;
if(tokens[i]=="+")
x=x1+x2;
else if(tokens[i]=="-")
x=x1-x2;
else if(tokens[i]=="*")
x=x1*x2;
else x=x1/x2;
s.push(x);
}
else {
int t=atoi(tokens[i].c_str());
s.push(t);
}
}
return s.top();
}
};