题目描述
你现在是棒球比赛记录员。
给定一个字符串列表,每个字符串可以是以下四种类型之一:
整数
(一轮的得分):直接表示您在本轮中获得的积分数。"+"
(一轮的得分):表示本轮获得的得分是前两轮有效
回合得分的总和。"D"
(一轮的得分):表示本轮获得的得分是前一轮有效
回合得分的两倍。"C"
(一个操作,这不是一个回合的分数):表示您获得的最后一个有效
回合的分数是无效的,应该被移除。
每一轮的操作都是永久性的,可能会对前一轮和后一轮产生影响。
你需要返回你在所有回合中得分的总和。
示例 1:
1 | 输入: ["5","2","C","D","+"] |
示例 2:
1 | 输入: ["5","-2","4","C","D","9","+","+"] |
注意:
- 输入列表的大小将介于1和1000之间。
- 列表中的每个整数都将介于-30000和30000之间。
题解
思路
- 遇到C:出栈
- 遇到D:栈顶元素*2,入栈
- 遇到+:栈顶两个元素求和,入栈
- 遇到数字:入栈
- 求栈中所有元素的和
C代码
1 | int calPoints(char **ops, int opsSize) |
Python代码
1 | class Solution: |
PS
- int atoi(const char *_Str):将String转化为int