首页 > 编程语言 >NBA 篮球赛的计分统计算法

NBA 篮球赛的计分统计算法

时间:2024-09-07 12:26:37浏览次数:9  
标签:篮球赛 charAt charAtPre int srcScoreArr continue 统计算法 Integer NBA

  1 import java.util.ArrayList;
  2 import java.util.Scanner;
  3 
  4 public class Solution {
  5 
  6     public static void main(String[] args) {
  7 
  8         Scanner scanner = new Scanner(System.in);
  9         String nextLine = scanner.nextLine();
 10 
 11         Integer scoreRet = getScoreRet(nextLine);
 12 
 13         System.out.println(scoreRet);
 14 
 15     }
 16 
 17     public static Integer getScoreRet(String srcScoreArrStr){
 18         if (srcScoreArrStr==null){
 19             return -1;
 20         }
 21         if (srcScoreArrStr.isEmpty()){
 22             return -1;
 23         }
 24 
 25         String trimSrcScoreTempArrStr = srcScoreArrStr.trim();
 26         String[] splitSrcScoreTempArrStr = trimSrcScoreTempArrStr.split("\\s");
 27         int length = splitSrcScoreTempArrStr.length;
 28         StringBuilder stringBuilder = new StringBuilder();
 29         for (int i = 0; i < length; i++) {
 30             String scoreStrTemp = splitSrcScoreTempArrStr[i];
 31             stringBuilder.append(scoreStrTemp);
 32         }
 33         String srcScoreArr = stringBuilder.toString();
 34 
 35         int srcScoreArrLen=srcScoreArr.length();
 36         for (int i = 0; i < srcScoreArrLen; i++) {
 37             char charAt = srcScoreArr.charAt(i);
 38             if (Character.isDigit(charAt)){
 39                 continue;
 40             }else if (charAt=='+'){
 41                 continue;
 42             }else if (charAt=='C'){
 43                 continue;
 44             }else if (charAt=='D'){
 45                 continue;
 46             }else{
 47                 return -1;
 48             }
 49         }
 50 
 51         if (srcScoreArrLen>1000 || srcScoreArrLen<1){
 52             return -1;
 53         }
 54 
 55         int multiPlyFac=10;
 56         for (int i = 0; i < 4; i++) {
 57             multiPlyFac*=10;
 58         }
 59         int lowDeadLineNum=-3;
 60         lowDeadLineNum*=multiPlyFac;
 61         int highRestricNum=3;
 62         highRestricNum*=multiPlyFac;
 63 
 64         for (int i = 0; i < srcScoreArrLen; i++) {
 65             char charAt = srcScoreArr.charAt(i);
 66             Integer integerScore = Integer.valueOf(charAt);
 67             if (Character.isDigit(integerScore)){
 68                 if (integerScore<lowDeadLineNum){
 69                     return -1;
 70                 }
 71                 if (integerScore>highRestricNum){
 72                     return -1;
 73                 }
 74             }
 75         }
 76 
 77         if (srcScoreArr.length()==1){
 78             char srcScoreArr1 = srcScoreArr.charAt(0);
 79             if (Character.isDigit(srcScoreArr1)){
 80                 return Integer.valueOf(srcScoreArr1);
 81             }
 82             if (srcScoreArr1=='+'){
 83                 return -1;
 84             }
 85         }
 86 
 87 
 88         ArrayList<Integer> integerArrayList = new ArrayList<Integer>();
 89        for (int i = 0; i < srcScoreArrLen; i++) {
 90             char charAt = srcScoreArr.charAt(i);
 91             Integer integerScore=0;
 92             if (Character.isDigit(charAt)) {
 93                 integerScore = Integer.valueOf(charAt);
 94                 integerArrayList.add(integerScore);
 95                 continue;
 96             }else {
 97                 char charAt1 = srcScoreArr.charAt(0);
 98                 if (charAt1=='+'){
 99                     integerScore=-1;
100                     integerArrayList.add(integerScore);
101 
102                     continue;
103                 }else {
104                     if (charAt=='C'){
105                         int indexPre=i-1;
106                         char charAtPre = srcScoreArr.charAt(indexPre);
107                         Integer integerScoreFactor = Integer.valueOf(charAtPre);
108                         if (Character.isDigit(integerScoreFactor)){
109 
110                             integerArrayList.remove(indexPre);
111 
112                             continue;
113                         }
114                     }
115 
116                     if (charAt=='D'){
117                         int indexPre=i-1;
118                         char charAtPre = srcScoreArr.charAt(indexPre);
119                         if (Character.isDigit(charAtPre)){
120                             if (Character.isDigit(charAtPre)){
121                                 Integer integerScoreTemp = Integer.valueOf(charAtPre);
122                                 int scoreFactor=integerScoreTemp*2;
123 
124                                 integerScore=scoreFactor;
125 
126                                 integerArrayList.add(integerScore);
127 
128                                 continue;
129                             }
130                         }
131                     }
132 
133                     if (charAt=='+'){
134                         int indexPre=i-1;
135                         char charAtPre= srcScoreArr.charAt(indexPre);
136                         if (Character.isDigit(charAtPre)){
137 
138                             char charAtCurr = srcScoreArr.charAt(i);
139                             Integer integerScoreCurr = Integer.valueOf(charAtCurr);
140 
141                             Integer integerScoreTemp = Integer.valueOf(charAtPre);
142                             int scoreFactor=integerScoreCurr+integerScoreTemp;
143 
144                             integerArrayList.add(scoreFactor);
145 
146                             continue;
147                         }
148                     }
149 
150                 }
151             }
152         }
153 
154 
155         int scoreRet=0;
156         for (Integer integer : integerArrayList) {
157             scoreRet+=integer;
158         }
159 
160         return scoreRet;
161     }
162 }

 

标签:篮球赛,charAt,charAtPre,int,srcScoreArr,continue,统计算法,Integer,NBA
From: https://www.cnblogs.com/liaowanzhong/p/18401537

相关文章

  • 基于ECharts+JS+Flask 交互可视化呈现NBA近期比赛信息及球队排名及数据 | 源码分享
    目录文章|内容结语|源代码文章|内容和大家分享一个我在闲暇之余写的一个小项目。为了能够更加直观的了解近期的NBA比赛信息、球队排名以及数据,本项目采用了ECharts、JS、Flask等技术进行可视化呈现。通过这种方式,我们可以更直观的了解NBA比赛,为球迷提供更好的观赛体验......
  • OceanBase-OCP-关于ocp忘记密码标准处理方案
    网址:我就不分享了,涉及企业内部隐私默认密码:cd/root/t-oceanbase-antman/tools./getpass.shomsmeta:k1uW0zr+JQmysql-h172.200.60.22-P2881-uroot@ocp_meta-pOCPadmin用户忘记找回ocpadmin用户登录密码遗忘,且system用户已被禁止登录,重置admin用户密码。......
  • oceanbase-3分钟带你看懂 GC 日志!
    3分钟带你看懂GC日志!------------------------------------------------------------------------------------ 01、背景介绍在之前的几篇文章中,我们介绍了 JVM内部布局、对象的创建过程、运行期的相关优化手段、垃圾对象的回收算法以及垃圾收集器等相关知识。那么如何......
  • OceanBase-OCP-bug之 fgc问题处理
    一、遇到问题时,处理过程关于调整ocp-server的jvm大小解释:1、在docker容器内设置exportJVM_HEAP_SIZE=xxxx,然后重启对应的ocp-server进程(/home/admin/ocp-server/bin/ocp-server),注意这里的大小不要超过docker容器的大小上限。2、在调整完ocp容器的内存大小之后(dockerupdate--......
  • OceanBase应用断链无cs_id分析
    今天是第一次写博,在OB工作也有一段时间了,国产数据库相对于oracle,mysql这些可能在排查难度方面可能是较高,但是也有一定的技巧。每天处理过的应用断连问题也有一定的量,全链路诊断其实是一个比较复杂的过程,在可能无法判断的时候,抓包是一个很重要的手段,但是断链一般是偶现,抓包的困难......
  • OceanBase-合并问题-工单处理常用SQL1
     OceanBase-合并问题-工单处理常用SQL1全量合并-------------------------------------------------------------OB默认是增量合并【发起的指定表的全量合并】1、修改表的模式,全量合并https://www.oceanbase.com/knowledge-base/oceanbase-database-2000000102......
  • OceanBase-【OBCP】认证-第二章 OB 存储引擎高级技术
    第二章OB存储引擎高级技术内存管理内存数据落盘策略-合并和转储LSMTree技术简介LSMTree(TheLog-StructuredMerge-Tree)核心特点是利用顺序写来提高写性能◼将某个对象(Partition)中的数据按照“key-value”形式在磁盘上有序存储(SSTable)◼数据更新先记录在MemStor......
  • OceanBase-OB备份异地恢复流程
    OB备份异地恢复流程——2023年5月9日一、【白屏操作】1、确定当前备份的OB版本: 2、新建备份目录授权(备份到本地目录为例):mkdir /obbackup/chown -R admin.admin /obbackup/保证能解析成功: 3、点击“备份”,查询操作系统的目录结构:4、拷贝租户层面数据文......
  • OceanBase-clog、日志-队列积压-dump tenant info
    dumptenantinfo日志中搜索dumptenantinfo关键字,可看到租户的规格,线程,队列,请求统计等信息。这条日志每个租户每10s打印一次。查询办法:  grep'dumptenantinfo.*observer.log日志:tenant={id:1002'log/observer.log.*[2021-05-1016:56:22.564978]INFO [SERVER.OMT]......
  • OceanBase -clog、日志-查看unit迁移过程中副本数变化
    查看unit迁移过程中副本数变化----------------------------------------------------------------------------------------------------------------------------第一:在副本迁移时候,可以查询以下SQL进行观察(适用2.X/3.X)查看副本数selectcount(*)from__all_virtual_m......