非常经典的栈题目了, 遇见数字就入栈, 遇见符号就取出栈首的两个数字作相应运算再入栈.
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> ans;
for(int i = 0; i < tokens.size(); i++){
if(tokens[i]=="+" || tokens[i]=="-" || tokens[i]=="*" || tokens[i]=="/"){
int tmp1 = ans.top();
ans.pop();
int tmp2 = ans.top();
ans.pop();
if(tokens[i]=="+") ans.push(tmp2+tmp1);
else if(tokens[i]=="-") ans.push(tmp2-tmp1);
else if(tokens[i]=="*") ans.push(tmp2*tmp1);
else if(tokens[i]=="/") ans.push(tmp2/tmp1);
} //取出栈首两个元素运算并入栈
else
ans.push(stoi(tokens[i]));
}
return ans.top() ;
}
};