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逆波兰表达式,比较简单,不过我的代码有点复杂。。。如下:
int evalRPN(vector<string> &tokens) {
stack<int> result;
result.push( 0 );
int one = 0, second = 0;
for( int ix = 0; ix < tokens.size(); ++ix )
{
if( tokens[ ix ] == "+" )
{
one = result.top(), result.pop();
second = result.top(), result.pop();
result.push( second + one );
}
else if( tokens[ ix ] == "-" )
{
one = result.top(), result.pop();
second = result.top(), result.pop();
result.push( second - one );
}
else if( tokens[ ix ] == "*" )
{
one = result.top(), result.pop();
second = result.top(), result.pop();
result.push( second * one );
}
else if( tokens[ ix ] == "/" )
{
one = result.top(), result.pop();
second = result.top(), result.pop();
result.push( second / one );
}
else result.push( atoi( tokens[ ix ].c_str()));
}
return result.top();
}
有大婶代码:
https://oj.leetcode.com/discuss/7494/my-accepted-c-solution