题目:你现在是棒球比赛记录员。
给定一个字符串列表,每个字符串可以是以下四种类型之一:
1.整数(一轮的得分):直接表示您在本轮中获得的积分数。
2. “+”(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。
3. “D”(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。
4. “C”(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,应该被移除。
每一轮的操作都是永久性的,可能会对前一轮和后一轮产生影响。
你需要返回你在所有回合中得分的总和。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/baseball-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码如下`
class Solution {
List<Integer> list = new ArrayList<>();
public int calPoints(String[] ops)
{
for(int i=0;i<ops.length;i++)
{
if (ops[i].equals("+"))
getsum();
else if (ops[i].equals("D"))
{
getD();
}
else if (ops[i].equals("C"))
{
getC();
}
else
{
int x =Integer.valueOf(ops[i]);
getint(x);
}
}
int sums =0;
for (int i=0;i<list.size();i++)
{
sums+=list.get(i);
}
return sums;
}
private void getint(int x)
{
list.add(x);
}
private void getsum()
{
if (list.size()>=2)
list.add(list.get(list.size()-1)+list.get(list.size()-2));
else
{
list.add(list.get(0));
}
}
private void getD()
{
if (!list.isEmpty())
{
list.add(list.get(list.size()-1)*2);
}
else
{
list.add(0);
}
}
private void getC()
{
if (!list.isEmpty())
list.remove(list.size()-1);
}
}
首先,我们对字符串列表遍历,对四类字符串进行相应,调用对应方法,在ArrayList中进行操作,注意list为空时的边界操作,最后对list中所有值求和返回。