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();
}
};