题目描述
计算逆波兰式(后缀表达式)的值
运算符仅包含"+","-","*"和"/",被操作数可能是整数或其他表达式
例如:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9↵ ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are+,-,*,/. Each operand may be an integer or another expression.
Some examples:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9↵ ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
解题思路
class Solution {
public:
int evalRPN(vector<string> &tokens) {
stack<int> num;
if(tokens.size() == 0)
return 0;
for(int i = 0; i < tokens.size(); i++){
if(tokens[i]== "+" || tokens[i]== "-" || tokens[i]== "*" || tokens[i]== "/"){
int a = num.top();
num.pop();
int b = num.top();
num.pop();
if( tokens[i] == "+")
b += a;
else if( tokens[i] == "-")
b -= a;
else if( tokens[i] == "*")
b *= a;
else
b /= a;
num.push(b);
}
else
num.push(atoi(tokens[i].c_str()));
}
return num.top();
}
};