150. Evaluate Reverse Polish Notation
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> s;
for(int i = 0; i < tokens.size(); ++i){
if(tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/"){
int first = s.top();
s.pop();
int second = s.top();
s.pop();
if(tokens[i] == "+")
s.push(second + first);
else if(tokens[i] == "-")
s.push(second - first);
else if(tokens[i] == "*")
s.push(second * first);
else
s.push(second / first);
}else{
s.push(stoi(tokens[i]));
// s.push(atoi(tokens[i].c_str()));
}
}
return s.top();
}
};