leetcode-2-逆波兰表达式求值

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

栈的裸题



class Solution {
public:
    //思路很简单,用栈,遇到符号退两栈运算,逻辑五分钟就写出来了,C++string比较弄死我了
    int evalRPN(vector<string> &tokens) {
        stack<int> st;
        for(auto token : tokens)
        {
            if(token == "+" || token == "-" || token == "*" || token == "/")
            {
                int op1 , op2 , res;
                //注意这里应该是 op1 -/ op2
                op2 = st.top();
                st.pop();
                op1 = st.top();
                st.pop();
                //这里坑死我了,因为这里的token是字符串,“+”是个char,不能直接==判断
                //strcmp要求两个输入是const char*,因此要把string转换为C-Style的string
                //我不知道答案里的那些 == 是怎么通过编译的
                //也可以用string.compare("xxxx")比较
                if(token.compare("+") == 0)
                    res = op1 + op2;
                if(strcmp(token.c_str(),"-") == 0)
                    res = op1 - op2;
                if(strcmp(token.c_str(),"*") == 0)
                    res = op1 * op2;
                if(strcmp(token.c_str(),"/") == 0)
                    res = op1 / op2;
                st.push(res);
            }
            else
            {
                //stringstream,whatever U spit to it,it will be the same kind with the one which U spit to.
                //有点像别人嘴巴嚼过的。。
                stringstream ss;
                ss<<token;
                int temp;
                ss>>temp;
                st.push(temp);
            }
        }
        return st.top();
    }
};

C++ string的类型比较
strcmp(,)需要两个输入都是const char*
string.compare() 更好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值