class Solution { public int calPoints(String[] a) { int b=0,j=0; int[] c = new int[a.length-1]; for(int i=0;i<a.length;i++){ Boolean str = a[i].matches("-?[0-9]+.?[0-9]*"); if(str==true){ j++; c[j]= Integer.parseInt(a[i]); b=b+c[j]; }else{ switch(a[i]){ case "C": b=b-c[j]; j--; break; case "D": j++; c[j]=2*c[j-1]; b=b+c[j]; break; case "+": j++; c[j]=c[j-2]+c[j-1]; b=b+c[j]; break; } } } return b; } }
时间: 2024-02-14 09:25:00 浏览: 115
java-leetcode面试题解Stack之第682题棒球比赛-题解.zip
这段代码是一个计算分数的方法。它接收一个字符串数组作为输入,并返回一个整数作为结果。
方法中的变量`b`和`j`用于存储计算过程中的中间结果。数组`c`用于存储每个得分的值。
代码使用一个循环遍历输入数组中的每个元素。如果元素是一个数字字符串,它会被转换为整数,并将其存储在数组`c`中。同时,将该数字加到变量`b`中。
如果元素是"C",则表示当前得分无效,需要将其从变量`b`中减去,并将变量`j`减1。
如果元素是"D",则表示当前得分是前一个有效得分的两倍。将其存储在数组`c`中,并将其加到变量`b`中。
如果元素是"+",则表示当前得分是前两个有效得分的和。将其存储在数组`c`中,并将其加到变量`b`中。
最后,将变量`b`作为结果返回。
这个方法的时间复杂度是O(n),其中n是输入数组的长度。
阅读全文