LeetCode--682--棒球比賽(java)

你如今是棒球比賽記錄員。spa

給定一個字符串列表,每一個字符串能夠是如下四種類型之一:
1.整數(一輪的得分):直接表示您在本輪中得到的積分數。
2. "+"(一輪的得分):表示本輪得到的得分是前兩輪有效 回合得分的總和。
3. "D"(一輪的得分):表示本輪得到的得分是前一輪有效 回合得分的兩倍。
4. "C"(一個操做,這不是一個回合的分數):表示您得到的最後一個有效 回合的分數是無效的,應該被移除。

每一輪的操做都是永久性的,可能會對前一輪和後一輪產生影響。
你須要返回你在全部回合中得分的總和。
code

示例 1:blog

輸入: ["5","2","C","D","+"]
輸出: 30
解釋: 
第1輪:你能夠獲得5分。總和是:5。
第2輪:你能夠獲得2分。總和是:7。
操做1:第2輪的數據無效。總和是:5。
第3輪:你能夠獲得10分(第2輪的數據已被刪除)。總數是:15。
第4輪:你能夠獲得5 + 10 = 15分。總數是:30。

示例 2:字符串

輸入: ["5","-2","4","C","D","9","+","+"]
輸出: 27
解釋: 
第1輪:你能夠獲得5分。總和是:5。
第2輪:你能夠獲得-2分。總數是:3。
第3輪:你能夠獲得4分。總和是:7。
操做1:第3輪的數據無效。總數是:3。
第4輪:你能夠獲得-4分(第三輪的數據已被刪除)。總和是:-1。
第5輪:你能夠獲得9分。總數是:8。
第6輪:你能夠獲得-4 + 9 = 5分。總數是13。
第7輪:你能夠獲得9 + 5 = 14分。總數是27。

注意:編譯器

  • 輸入列表的大小將介於1和1000之間。
  • 列表中的每一個整數都將介於-30000和30000之間。

這個在編譯器過不了。。。。看第二個io

 1 class Solution {
 2     public int calPoints(String[] ops) {
 3         
 4         Pattern pattern = Pattern.compile("-?[0-9]+.*[0-9]*");
 5             int len = 0,j=0,sum=0,i=0;
 6             for(i = 0;i<ops.length;i++){
 7             }
 8             for(i = 0;i < ops.length;i++){
 9                 if(ops[i] != "C"){
10                     len++;
11                 }else{
12                     len -= 1;
13                 }
14             }
15             int[] res= new int[len];
16             for(i = 0;i < ops.length;i++){
17                 if(pattern.matcher(ops[i]).matches()){
18                     res[j] = Integer.parseInt(ops[i]);
19                     j++;
20                 }else if(ops[i] == "C"){
21                     while(res[j-1]>30000){
22                         j--;
23                     }
24                     res[--j] = 30001;
25                 }else if(ops[i] == "D"){
26                     res[j] = res[j-1]*2;
27                     j++;
28                 }else if(ops[i] == "+"){
29                     res[j] = res[j-1]+res[j-2];
30                     j++;
31                 }
32             }
33             for(i = 0;i < res.length;i++){
34                 sum += res[i];
35             }
36             return sum;
37     }
38 }

2019-03-07 23:21:24編譯

 1 class Solution {
 2     public int calPoints(String[] ops) {
 3         Stack<Integer> stack = new Stack();
 4         for(String s : ops){
 5             if(s.equals("C")){
 6                 stack.pop();
 7             }else if(s.equals("+")){
 8                 int a = stack.pop();
 9                 int b = stack.pop();
10                 stack.push(b);
11                 stack.push(a);
12                 stack.push(a+b);
13             }else if(s.equals("D")){
14                 stack.push(stack.peek()*2);
15             }else{
16                 stack.push(Integer.parseInt(s));
17             }
18         }
19         int res=0;
20         while(!stack.isEmpty()){
21             res += stack.pop();
22         }
23         return res;
24     }
25 }

2019-03-08 10:37:08class

相關文章
相關標籤/搜索