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) { int len = tokens.size(); stack<int> s; for(vector<string>::size_type i = 0;i < tokens.size(); i++){ if(tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/"){ int op2 = s.top(); s.pop(); int op1 = s.top(); s.pop(); s.push(op(op1,op2,tokens[i])); }else{ s.push(stoi(tokens[i])); } } return s.top(); } int op(int op1,int op2,string optor){ if(optor == "+") return op1+op2; else if(optor == "-") return op1-op2; else if(optor == "*") return op1*op2; else if(optor == "/") return op1/op2; return 0; } };