哥们,牛客样例还是太不全面了,我自创了个样例,你的代码是过不了的。
1?:11
18:59

按理来说这种最小时间应该是18:11 到18:59的时间差,即48分钟。但是你的代码没有考虑这种情况,导致结果为1分钟。
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息/**思路:1、最小间隔时间、最大间隔时间2、第一次的小时、分钟,每一位单独处理3、第二次小时分钟,每一位单独处理4、注意各种特殊情况的处理,比如小时第二位,第一次比第二次大,就要将第一位+15、如果分钟,第一次比第二次大,就要将小时往前推,前提是第一次和第二次在所有值填充完了以后,小时相同6、最大相差,直接去各自的极值,不用考虑各种重合情况 */public class Main {    public static void main(String[] args) throws IOException{        BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));        //获取输入事件        String time1 = buff.readLine();        String time2 = buff.readLine();        int min = Math.max(1, min(time1, time2));        int max = max(time1,time2);        System.out.println(min + " " + max);    }    //找到两个时间最小差距    public static int min(String time1,String time2) {        //取最大时间         //取时间1的时分        String hour1 = time1.split(":")[0];        String minute1 = time1.split(":")[1];        //取最大时间         //获取时间2的时分        String hour2 = time2.split(":")[0];        String minute2 = time2.split(":")[1];        //第一行小时如果是?        if(hour1.charAt(0) == '?' && hour2.charAt(0) != '?') {            hour1 = hour2.charAt(0) + "" + hour1.charAt(1);          }        if(hour1.charAt(0) == '?' && hour2.charAt(0) == '?') {            if(hour1.charAt(1)>hour2.charAt(1)) {                hour1 = "0" + hour1.charAt(1);                hour2 = "1" + hour2.charAt(1);            }else {                hour1 = "0" + hour1.charAt(1);                hour2 = "0" + hour2.charAt(1);            }        }        if(hour1.charAt(1) == '?') {            if(hour1.charAt(0) == '2') {                hour1 = hour1.charAt(0) + "3";            }else {                hour1 = hour1.charAt(0) + "9";            }        }        if(minute1.charAt(0) == '?') {            minute1 = "5" + minute1.charAt(1);        }         if(minute1.charAt(1) == '?') {            minute1 = minute1.charAt(0) + "9";        }        if(hour2.charAt(0) == '?') {            if(hour1.charAt(1)> hour2.charAt(1)) {               hour2 = (Integer.parseInt(hour1.charAt(0) + "") + 1) + "" + hour2.charAt(1);            }        }        if(hour2.charAt(1) == '?') {            if(hour1.charAt(0) == hour2.charAt(0)) {              hour2 = hour2.charAt(0) + "" + hour1.charAt(1);            }else {              hour2 = hour2.charAt(0) + "0";            }        }        if(minute2.charAt(0) == '?') {            if(hour1.equals(hour2)) {                minute2 = minute1.charAt(0)  + "" + minute2.charAt(1);            }else {                minute2 = "0" + minute2.charAt(1);            }        }         if(minute2.charAt(1) == '?') {            if(hour1.equals(hour2) && (minute1.charAt(0) == minute2.charAt(0))) {                minute2 = minute2.charAt(0) + "" + minute1.charAt(1);            }else {                minute2 = minute2.charAt(0) + "0";            }        }        //小时相互减        int resultH = Integer.parseInt(hour2) - Integer.parseInt(hour1);        //分钟        if(Integer.parseInt(minute2) < Integer.parseInt(minute1)) {            if(resultH == 0) {                resultH += 1;            }        }        int minute = Integer.parseInt(minute2) - Integer.parseInt(minute1);        return resultH*60 + minute;    }    //找到最大差距    public static int max(String time1,String time2) {                //取最大时间         //取时间1的时分        String hour1 = time1.split(":")[0];        String minute1 = time1.split(":")[1];        //取最大时间         //获取时间2的时分        String hour2 = time2.split(":")[0];        String minute2 = time2.split(":")[1];        //第一位小时如果是?        if(hour1.charAt(0) == '?') {           hour1 = "0" + hour1.charAt(1);        }        if(hour1.charAt(1) == '?') {            hour1 = hour1.charAt(0) + "0";        }        if(minute1.charAt(0) == '?') {            minute1 = "0" + minute1.charAt(1);        }         if(minute1.charAt(1) == '?') {            minute1 = minute1.charAt(0) + "0";        }        //第二行的时间        if(hour2.charAt(0) == '?') {            hour2 = "2" + hour2.charAt(1);        }        if(hour2.charAt(1) == '?') {            if(hour2.charAt(0) == '2') {                hour2 = hour2.charAt(0) + "3";            }else {                hour2 = hour2.charAt(0) +  "9";            }        }        if(minute2.charAt(0) == '?') {            minute2 = "5" + minute2.charAt(1);        }         if(minute2.charAt(1) == '?') {            minute2 = minute2.charAt(0) + "9";        }        //小时相互减        int resultH = Integer.parseInt(hour2) - Integer.parseInt(hour1);        //分钟        int minute = Integer.parseInt(minute2) - Integer.parseInt(minute1);        return resultH*60 + minute;    }}
点赞 0
评论 1
全部评论

相关推荐

2025-12-19 19:02
西安交通大学 Java
程序员牛肉:双九,而且还是西交这种比较好的985九没必要再投日常了。你投中小厂,人家会觉得你学历这么顶还面试肯定是海投的,过了你也不去。所以不约你了。 直接准备暑期实习就好,现在你可以面试。但是目的不再是去日常实习了,而是熟悉面试节奏。 后续把精力放到八股,算法和AI知识上。抽空把自己这两个项目换了,怎么选项目可以看看我主页写的文章。 你学历不错的,不要焦虑
那些拿到大厂offer的...
点赞 评论 收藏
分享
Jcwemz:中软证书写单行,考了什么学了什么相关技术栈的内容就说自己会什么, 没实习就包装实习简历,将项目经历写成实习做的,项目时间拉长,项目成果具体化,测试的项目成果无非就是写了多少用例查出了多少bug,重要的不是实习了多久,而是你会多少东西,你能表达的就都是你的。 cet4,随便找个地方标上就好了,不用写单行。 粗略建议,我也不在行,觉得对的可以采纳
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务