题目链接:https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/
解题思路:简单的后缀表达式运算,使用栈结构辅助计算
代码:
class Solution {
public:
int evalRPN(vector<string> &tokens) {
while (!nums.empty()) {
nums.pop();
}
vector<string>::iterator iter = tokens.begin();
while (iter != tokens.end()) {
string temp = *iter;
if (isOperator(temp)) {
int num_2 = nums.top();
nums.pop();
int num_1 = nums.top();
nums.pop();
int result = calculate(num_1, num_2, temp);
nums.push(result);
}
else {
nums.push(atoi(temp.c_str()));
}
iter++;
}
return nums.top();
}
bool isOperator(string op) {
return (op == "+" || op == "-" || op == "*" || op == "/");
}
int calculate(int num_1, int num_2, string op) {
if (op == "+") {
return num_1 + num_2;
}
else if (op == "-") {
return num_1 - num_2;
}
else if (op == "*") {
return num_1 * num_2;
}
else if (op == "/") {
return num_1 / num_2;
}
}
private:
stack<int> nums;
};