首页 > 其他 > 详细

波兰表达式问题

时间:2015-09-14 21:16:12      阅读:259      评论:0      收藏:0      [点我收藏+]

原题:求逆波兰表达式的值,在逆波兰表达式中,其有效的运算符号+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。

["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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!