150. 逆波兰表达式求值——栈的运用

150. 逆波兰表达式求值——栈的运用,第1张

150. 逆波兰表达式求值——栈的运用
class Solution {
public:
    int evalRPN(vector& tokens) {
        stack nums;
        for(auto token : tokens){
            if(token[0] >= '0' && token[0] <= '9' || token.size() > 1)  //特殊情况是负数,负数的长度必大于1
                nums.push(stoi(token)); //转换为int
            else{
                int num2 = nums.top();  //先出的是后进的
                nums.pop();
                int num1 = nums.top();
                nums.pop();
                switch (token[0])   //剩下就是算术运算符
                {
                case '+':
                    nums.push(num1 + num2);
                    break;
                case '-':
                    nums.push(num1 - num2);
                    break;
                case '*':
                    nums.push(num1 * num2);
                    break;
                case '/':
                    nums.push(num1 / num2);
                    break;
                default:
                    break;
                }
            }
        }
        return nums.top();
    }
};

Accepted
20/20 cases passed (4 ms)
Your runtime beats 98.3 % of cpp submissions
Your memory usage beats 77.45 % of cpp submissions (11.6 MB)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5722198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存