网站开发公司多少钱,北京做网站的公司排名,网站首页调用网站标题,百度引擎搜索推广题目#xff1a; 你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成#xff0c;过去几回合的得分可能会影响以后几回合的得分。 比赛开始时#xff0c;记录是空白的。你会得到一个记录操作的字符串列表 ops#xff0c;其中 ops[i] 是你需要记录的第 i 项操… 题目 你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成过去几回合的得分可能会影响以后几回合的得分。 比赛开始时记录是空白的。你会得到一个记录操作的字符串列表 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提示 1 ops.length 1000ops[i] 为 C、D、或者一个表示整数的字符串。整数范围是 [-3 * 104, 3 * 104]对于 操作题目数据保证记录此操作时前面总是存在两个有效的分数对于 C 和 D 操作题目数据保证记录此操作时前面总是存在一个有效的分数 这一道题目就是针对不同的操作得出不同的结果。可以尝试用ArrayList存放操作符。然后分支判断不同情况下的不同操作。
方法一代码如下
class Solution {public int calPoints(String[] ops) {int n ops.length;ListIntegersum new ArrayList();for(String ch : ops) {switch(ch){case :sum.add(sum.get(sum.size()-1)sum.get(sum.size()-2));break;case D:sum.add(sum.get(sum.size()-1)*2);break;case C:sum.remove(sum.size()-1);break;default :sum.add(Integer.parseInt(ch));break;}}int result 0;for(int op:sum){result op;}return result;}
}