你现在是棒球比赛记录员。 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数。
示例 1:
输入: ["5","2","C","D","+"]
输出: 30
解释:
第1轮:你可以得到5分。总和是:5。
第2轮:你可以得到2分。总和是:7。
操作1:第2轮的数据无效。总和是:5。
第3轮:你可以得到10分(第2轮的数据已被删除)。总数是:15。
第4轮:你可以得到5 + 10 = 15分。总数是:30。
示例 2:
输入: ["5","-2","4","C","D","9","+","+"]
输出: 27
解释:
第1轮:你可以得到5分。总和是:5。
第2轮:你可以得到-2分。总数是:3。
第3轮:你可以得到4分。总和是:7。
操作1:第3轮的数据无效。总数是:3。
第4轮:你可以得到-4分(第三轮的数据已被删除)。总和是:-1。
第5轮:你可以得到9分。总数是:8。
第6轮:你可以得到-4 + 9 = 5分。总数是13。
第7轮:你可以得到9 + 5 = 14分。总数是27。
class Solution {
public:
int calPoints(vector<string>& ops) {
stack<int> p;
int sum=0;
for(auto i: ops)
{
if(i=="C" && !p.empty())
{
sum-=p.top();
p.pop();
}
else if(i=="D")
{
int t=p.top() *2;
sum+=t;
p.push(t);
}
else if(i=="+")
{
int t1=p.top();
p.pop();
int t2=p.top();
sum +=t1+t2;
p.push(t1);
p.push(t1+t2);
}
else
{
int t=stoi(i);
sum +=t;
p.push(t);
}
// cout<<p.top()<<"+"<<sum<<endl;
}
return sum;
}
};