Leetcode 682. 棒球比赛 解题思路及C++实现

解题思路:

这道题比较简单,就是直接用一个stack,依次处理输入容器中的每一个字符串,要注意的是:将string转为int,C++中函数为stoi();

 

class Solution {
public:
    int calPoints(vector<string>& ops) {
        int res = 0;  //一定要初始化为0
        stack<int> s;
        for(auto x: ops){
            if(x == "C" && !s.empty()) s.pop();
            else if(x == "D" && !s.empty())
                s.push(s.top() * 2);
            else if(x == "+" && !s.empty()){
                int tmp1 = s.top();
                s.pop();
                int tmp2 = tmp1;
                if(!s.empty()){
                    tmp2 += s.top();
                }
                s.push(tmp1);
                s.push(tmp2);
            }
            else s.push(stoi(x));  //需要将string转为int
        }
        
        //接下来逐个访问栈中的元素,得到总分
        while(!s.empty()){
            res += s.top();
            s.pop();
        }
        return res;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值