你現在是一場採用特殊賽制棒球比賽的記錄員。這場比賽由若干回合組成,過去幾回合的得分可能會影響以後幾回合的得分。
比賽開始時,記錄是空白的。你會得到乙個記錄操作的字串列表 ops,其中 ops[i] 是你需要記錄的第 i 項操作,ops 遵循下述規則:
整數 x - 表示本回合新獲得分數 x
「+」 - 表示本回合新獲得的得分是前兩次得分的總和。題目資料保證記錄此操作時前面總是存在兩個有效的分數。
「d」 - 表示本回合新獲得的得分是前一次得分的兩倍。題目資料保證記錄此操作時前面總是存在乙個有效的分數。
「c」 - 表示前一次得分無效,將其從記錄中移除。題目資料保證記錄此操作時前面總是存在乙個有效的分數。
請你返回記錄中所有得分的總和。
示例 1:
輸入:ops = [「5」,「2」,「c」,「d」,"+"]
輸出:30
解釋:「5」 - 記錄加 5 ,記錄現在是 [5]
「2」 - 記錄加 2 ,記錄現在是 [5, 2]
「c」 - 使前一次得分的記錄無效並將其移除,記錄現在是 [5].
「d」 - 記錄加 2 * 5 = 10 ,記錄現在是 [5, 10].
「+」 - 記錄加 5 + 10 = 15 ,記錄現在是 [5, 10, 15].
所有得分的總和 5 + 10 + 15 = 30
示例 2:
輸入:ops = [「5」,"-2",「4」,「c」,「d」,「9」,"+","+"]
輸出:27
解釋:「5」 - 記錄加 5 ,記錄現在是 [5]
「-2」 - 記錄加 -2 ,記錄現在是 [5, -2]
「4」 - 記錄加 4 ,記錄現在是 [5, -2, 4]
「c」 - 使前一次得分的記錄無效並將其移除,記錄現在是 [5, -2]
「d」 - 記錄加 2 * -2 = -4 ,記錄現在是 [5, -2, -4]
「9」 - 記錄加 9 ,記錄現在是 [5, -2, -4, 9]
「+」 - 記錄加 -4 + 9 = 5 ,記錄現在是 [5, -2, -4, 9, 5]
「+」 - 記錄加 9 + 5 = 14 ,記錄現在是 [5, -2, -4, 9, 5, 14]
所有得分的總和 5 + -2 + -4 + 9 + 5 + 14 = 27
示例 3:
輸入:ops = [「1」]
輸出:1
# 根據題目要求寫判斷條件即可
class
solution
:def
calpoints
(self, ops: list[
str])-
>
int:
res =
for i in ops:
if i.lstrip(
'-')
.isdigit():
# 因為isdigit()函式無法判斷負數,所以需要先去掉負號再判斷
int(i)
)elif i ==
"+"and
len(res)
>=2:
int(res[-1
])+int
(res[-2
]))elif i ==
"d"and
len(res)
>=1:
int(res[-1
])*2
)elif i ==
"c"and
len(res)
>=1:
res.remove(res[-1
])return
sum(res)
682 棒球比賽
你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個回合的分數 ...
682 棒球比賽
你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個回合的分數 ...
682 棒球比賽
題目描述 你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個回...