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