class Solution
{
public:
int evalRPN(vector<string>& tokens);
};
int handle(int n1, int n2, string s)
{
if (s == "+")
return n1+n2;
else if (s == "-")
return n1-n2;
else if (s == "*")
return n1*n2;
else if (s == "/")
return n1/n2;
else
return 0;
}
int Solution::evalRPN(vector<string>& tokens)
{
int size = tokens.size();
if (size <= 0)
{
return 0;
}
stack<int> stk;
vector<string>::iterator itr = tokens.begin();
while (itr != tokens.end())
{
if (*itr=="+" || *itr=="-" || *itr=="*" || *itr=="/")
{
int n1 = stk.top();
stk.pop();
int n2 = stk.top();
stk.pop();
stk.push(handle(n2, n1, *itr));
}
else
{
stk.push(atoi((*itr).c_str()));
}
itr++;
}
return stk.top();
}