棒球比赛
题目:棒球比赛
你现在是棒球比赛记录员。
给定一个字符串列表,每个字符串可以是以下四种类型之一:
1.整数
(一轮的得分):直接表示您在本轮中获得的积分数。
2. "+"
(一轮的得分):表示本轮获得的得分是前两轮有效
回合得分的总和。
3. "D"
(一轮的得分):表示本轮获得的得分是前一轮有效
回合得分的两倍。
4. "C"
(一个操作,这不是一个回合的分数):表示您获得的最后一个有效
回合的分数是无效的,应该被移除。
每一轮的操作都是永久性的,可能会对前一轮和后一轮产生影响。
你需要返回你在所有回合中得分的总和。
注意:
- 输入列表的大小将介于1和1000之间。
- 列表中的每个整数都将介于-30000和30000之间。
解题思路:
1、入栈,出栈的操作来记录分数列表
代码:
class Solution(object):
def calPoints(self, ops):
score_list = []
sum = 0
length = len(ops)
if length>=1 and length<=1000:
for i in ops:
if i =='C':
score_list.pop()
elif i=='D':
score = int(score_list[-1])*2
score_list.append(str(score))
elif i=='+':
score = int(score_list[-1])+int(score_list[-2])
score_list.append(str(score))
elif int(i)>=-3000 and int(i)<=3000:
score_list.append(i)
else:
print("不符合要求的计分形式")
for j in score_list:
sum += int(j)
return sum
else:
print("不符合要求的计分形式")