题意:逆波兰式求值。
题解:用栈模拟即可。
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> sta;
int n = tokens.size();
for(int i = 0; i < n; i++)
{
if(tokens[i].size() > 1 || isdigit(tokens[i][0]))
sta.push(atoi(tokens[i].c_str()));
else
{
int num2 = sta.top();
sta.pop();
int num1 = sta.top();
sta.pop();
int num;
if(tokens[i] == "+") num = num1 + num2;
else if(tokens[i] == "-") num = num1 - num2;
else if(tokens[i] == "*") num = num1 * num2;
else num = num1 / num2;
sta.push(num);
}
}
return sta.top();
}
};