class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> nums;
for(auto token : tokens){
if(token[0] >= '0' && token[0] <= '9' || token.size() > 1) //特殊情况是负数,负数的长度必大于1
nums.push(stoi(token)); //转换为int
else{
int num2 = nums.top(); //先出的是后进的
nums.pop();
int num1 = nums.top();
nums.pop();
switch (token[0]) //剩下就是算术运算符
{
case '+':
nums.push(num1 + num2);
break;
case '-':
nums.push(num1 - num2);
break;
case '*':
nums.push(num1 * num2);
break;
case '/':
nums.push(num1 / num2);
break;
default:
break;
}
}
}
return nums.top();
}
};
Accepted
20/20 cases passed (4 ms)
Your runtime beats 98.3 % of cpp submissions
Your memory usage beats 77.45 % of cpp submissions (11.6 MB)