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
将逆波兰式计算结果。难度Medium.
class Solution { public: int evalRPN(vector<string>& tokens) { stack<int> sta; for(int i = 0; i < tokens.size(); i++) { string s = tokens[i]; if(s[s.length()-1] >= '0' && s[s.length()-1] <='9') { int j =0; if(s[0]=='-') j = 1; int num = 0; for( ; s[j]; j++) num = num * 10 + s[j] - '0'; sta.push(s[0]=='-'? -num :num); } else { int opt2 = sta.top(); sta.pop(); int opt1 = sta.top(); sta.pop(); if(s[0]=='+') sta.push(opt1 + opt2); else if(s[0]=='-') sta.push(opt1 - opt2); else if(s[0]=='*') sta.push(opt1 * opt2); else sta.push(opt1 / opt2); } } return sta.top(); } };