Evaluate Reverse Polish Notation
/*
The infix expression "5 + ((1 + 2) * 4) − 3" can be written down like this in RPN:
5 1 2 + 4 * + 3 -
*/
int evalRPN(vector<string> &tokens) {
if(tokens.empty()) return 0;
stack<int> stk;
int i=0;
while(i < tokens.size()) { // should be "9" not '9'
if(tokens[i] != "+" && tokens[i] != "-" && tokens[i] != "*" && tokens[i] != "/")
stk.push(atoi(tokens[i].c_str()));
else {
int op1 = stk.top(); stk.pop();
int op2 = stk.top(); stk.pop();
char op = tokens[i];
if(op == "+") stk.push(op2 + op1); // op1 first, op1 second
else if(op == "-") stk.push(op2 - op1); // op2 first, op1 second
else if(op == "*") stk.push(op2 * op1);
else if(op == "/") stk.push(op2 / op1);
}
i++;
}
return stk.top();
}