Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are
Example+
, -
, *
, /
. Each operand may be an integer or another expression.["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
class Solution { public: /** * @param tokens The Reverse Polish Notation * @return the value */ int evalRPN(vector<string>& tokens) { // Write your code here int len = tokens.size(); if(len == 0) return 0; stack<int> s; int start = 0; while(start<len){ if(tokens[start].length() == 1 && !isalnum(tokens[start][0])) { int a = s.top(); s.pop(); int b = s.top(); s.pop(); if(tokens[start][0] == '+') s.push(a+b); else if(tokens[start][0] == '-') s.push(b-a); else if(tokens[start][0] == '*') s.push(a*b); else if(tokens[start][0] == '/') s.push(b/a); } else { s.push(stoi(tokens[start])); } start++; } return s.top(); } };