棒球比赛

题目:棒球比赛

你现在是棒球比赛记录员。
给定一个字符串列表,每个字符串可以是以下四种类型之一:
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("不符合要求的计分形式")

posted on 2018-12-25 11:38  罗盼  阅读(135)  评论(0编辑  收藏  举报

导航