150. 逆波兰表达式求值(栈)

题目

class Solution {
public:
    /* 
        数字入栈,然后符号入栈,将栈顶两个数字出栈,进行运算,再将结果入栈。
    */
    int evalRPN(vector<string>& tokens) {
        stack<int> st;
        int size = tokens.size();
        for (int i = 0; i < size; i++) {
            // tokens 是vector!!!!
            // if (isdigit(tokens[i])) {
            //     st.push(tokens[i]);
            // }
            if (tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/") {
                if (tokens[i] == "+") {
                    int s2 = int(st.top());
                    st.pop();
                    int s1 = int(st.top());
                    st.pop();
                    int s = s1 + s2;
                    st.push(s);
                }
                else if (tokens[i] == "-") {
                    int s2 = int(st.top());
                    st.pop();
                    int s1 = int(st.top());
                    st.pop();
                    int s = s1 - s2;
                    st.push(s);
                }
                else if (tokens[i] == "*") {
                    int s2 = int(st.top());
                    st.pop();
                    int s1 = int(st.top());
                    st.pop();
                    int s = s1 * s2;
                    st.push(s);
                }
                else  {
                    int s2 = int(st.top());
                    st.pop();
                    int s1 = int(st.top());
                    st.pop();
                    int s = s1 / s2;
                    st.push(s);
                }
            }
            else {
                // 将字符转成数字!!!!!!
                st.push(stoi(tokens[i]));
            }
        }
        int res = st.top();
        return res;
    }
};

在这里插入图片描述

总结

  • 本题将字符转成数字难住了我…
  • stoi()
  • to_string()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值