047 · Baseball Game
algorithm
Problem
你正在记录一场特殊棒球比赛的得分。
比赛由一串操作组成,每个操作都会影响当前的得分记录。
给定一个字符串数组 operations,请根据这些操作计算最后的总分。
每个操作可能是下面几种:
- 一个整数:表示本轮得到这个分数
"+":表示本轮得分是前两轮有效得分之和"D":表示本轮得分是前一轮有效得分的两倍"C":表示取消前一轮有效得分
这里的“有效得分”指的是还没有被 "C" 取消掉的得分。
例如:
operations = ["5", "2", "C", "D", "+"]
按顺序看:
"5" -> 记录 5
"2" -> 记录 2
"C" -> 取消 2
"D" -> 前一轮有效得分是 5,所以记录 10
"+" -> 前两轮有效得分是 5 和 10,所以记录 15
最后有效得分是:
5 + 10 + 15 = 30
所以答案是:
30
Examples
示例 1
Input: operations = ["5", "2", "C", "D", "+"]
Output: 30
解释:"C" 取消了 2,后面记录了 10 和 15,最后总分是 5 + 10 + 15 = 30。
示例 2
Input: operations = ["5", "-2", "4", "C", "D", "9", "+", "+"]
Output: 27
解释:
"5" -> 记录 5
"-2" -> 记录 -2
"4" -> 记录 4
"C" -> 取消 4
"D" -> 前一轮有效得分是 -2,所以记录 -4
"9" -> 记录 9
"+" -> 前两轮有效得分是 -4 和 9,所以记录 5
"+" -> 前两轮有效得分是 9 和 5,所以记录 14
最后总分是:
5 + (-2) + (-4) + 9 + 5 + 14 = 27
示例 3
Input: operations = ["1", "C"]
Output: 0
解释:先记录 1,然后用 "C" 取消它。最后没有有效得分,所以总分是 0。
Constraints
- \(1 \leq\)
operations.length\(\leq 1000\) operations[i]是"+"、"D"、"C",或者一个表示整数的字符串- 整数范围是 \(-3 \times 10^4\) 到 \(3 \times 10^4\)
- 对于
"+"操作,前面总是至少有两个有效得分 - 对于
"D"和"C"操作,前面总是至少有一个有效得分
Link
→ Solution