leetcode_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

  ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

计算逆波兰式的值,计算符号只有加减乘除,一看就是需要用到栈模拟,遇到算术符号,就从顶部取数据进行计算,再压入结果。主要注意输入是字符串,需要变成对应数字,一个技巧就是读入到输入输出流中,如下str2num,num2str,十分方便。

class Solution {
public:
    int evalRPN(vector<string> &tokens) {
        return   (int) solve(tokens);

    }
    long str2num(string s)
    {
        long num;
        stringstream ss(s);
        ss>>num;
        return num;
    }
    string num2str(long i)
    {
        stringstream ss;
        ss<<i;
        return ss.str();
    }

    long solve(vector<string> & tokens)
    {
        stack<string> s;

        for(vector<string>::iterator it = tokens.begin();it!=tokens.end();it++)
        {
           if (*it=="+" || *it=="-" || *it =="*" || *it=="/")
           {
                long op1,op2,op3;
               op2 = str2num(s.top());
                s.pop();
               op1 = str2num(s.top());
               s.pop();
               if (*it=="+")
                    op3 = op1 + op2;
                    else
                        if(*it=="-")
                            op3 = op1 - op2;
                            else
                                if(*it=="*")
                                    op3 = op1 * op2;
                                    else
                                        op3 = op1 / op2;
                string str=num2str(op3);
                s.push(str);
           }
           else{
            s.push(*it);
           }
        }
        return str2num(s.top());
    }



};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值