leetcode-150-逆波兰表达式求值
class Solution {
public:
int cul(int a, int b, char tokens) {//a:顶一,b:顶二
switch (tokens)
{
case('+'): return a + b;
case('-'): return b - a;
case('*'): return a * b;
case('/'): return b / a;
}
}
int evalRPN(vector<string>& tokens) {
stack<int> nums;
int res = 0;
for (auto s: tokens) {
if (s[0] == '-' && s.size() > 1) nums.push(-stoi(s.substr(1)));
else if (s == "+" || s == "-" || s == "*" || s == "/") {
int a = nums.top();
nums.pop();
int b = nums.top();
nums.pop();
nums.push(cul(a, b, s[0]));
}
else {//数字
nums.push(stoi(s));
}
}
return nums.top();
}
};
int main()
{
Solution sol;
vector<string> input = { "10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+" };
cout << sol.evalRPN(input);
cout << endl;
return 0;
}