标签:
原题:求逆波兰表达式的值,在逆波兰表达式中,其有效的运算符号+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。
["2","1","+","3","*"] -> ((2+1) * 3) -> 9
["4","13","5","/","+"] -> (4 + (13 / 5)) -> 6
int evalRPN(vector<string>& tokens)
{
stack<string> s;
for(auto tok : tokens)
{
if(!is_operator(tok))
{
s.push(tok);
}
else
{
int y = stoi(s.top());
s.pop();
int x = stoi(s.top());
s.pop();
if(tok[0] == ‘+‘) x += y;
else if(tok[0] == ‘-‘) x -= y;
else if(tok[0] == ‘*‘) x *= y;
else x /= y;
s.push(to_string(x));
}
}
return stoi(s.top());
}
bool is_operator(const string &op)
{
return op.length() == 1 && string("+-*/").find(op) != string::npos;
}
标签:
原文地址:http://my.oschina.net/lucusguo/blog/506048