解题思路
根据后缀表达式概念,借助栈,不断将字符入栈,当碰到当前字符是运算符,就将已入栈的左右数值弹出,求得结果后,将结果入栈
class Solution {
public:
int evalRPN(vector<string> &tokens) {
if(tokens.size() == 0)
return 0;
stack<int> result;
for(auto token : tokens)
{
if(token == "+" || token == "-" || token == "*" || token == "/")
{
if(result.size() < 2)
return 0;
int right = result.top();result.pop();
int left = result.top();result.pop();
int res = 0;
if(token == "+")
res = left+right;
else if(token == "-")
res = left-right;
else if(token == "*")
res = left*right;
else if(token == "/")
res = left/right;
result.push(res);
}
else
{
stringstream ss;
ss << token;
int res;
ss >> res;
result.push(res);
//result.push(atoi(token.c_str()));
}
}
return result.top();
}
};