题解 | #ranko的手表#

ranko的手表

http://www.nowcoder.com/practice/37275e85ae7c4453920eae6b9f7f45fc

这肯定是最快题解了吧(写得我想吐)

我相信你看得也想吐 alt

import java.util.*;

public class Main{
    
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        String s1 = scanner.nextLine();
        String s2 = scanner.nextLine();
        int min = Math.max(1,min(s1,s2));
        int max = max(s1,s2);
        System.out.print(min + " " + max);
    }
    public static int min(String s1, String s2){
        String[] split1 = s1.split(":");
        String h1 = split1[0];
        String m1 = split1[1];
        String[] split2 = s2.split(":");
        String h2 = split2[0];
        String m2 = split2[1];
        char c1 = h1.charAt(0), c2 = h1.charAt(1);
        char c11 = h2.charAt(0), c22 = h2.charAt(1);
        int h=0;
        if(c1 != '?' && c11 != '?' && c2 != '?' && c22 != '?'){
            int H1 = Integer.parseInt(h1);
            int H2 = Integer.parseInt(h2);
            h = H2 - H1;
        }if(c2 != '?' && c22 != '?'){
            if(c2 > c22){
                h = 10 - (c2 - '0') + (c22 - '0');
            }
        }else if(c1 != '?' && c11 != '?'){
            if(c1 == c11){
                h = 0;
            }else{
                if(c2 == '?')c2 = '9';
                if(c22 == '?')c22 = '0';
                h = (c11 - c1 - 1)*10 + 10 - (c2 - '0') + (c22 - '0');
            }
        }else{
           h = 0; 
        } 
        char c3 = m1.charAt(0), c4 = m1.charAt(1);
        char c33 = m2.charAt(0), c44 = m2.charAt(1);
        if(h == 0){
            if(c3 != '?' && c33 != '?' && c3 > c33){
                h = 1;
            }
            if(c3 != '?' && c33 != '?' && c3 == c33){
                if(c4 == '9' || c44 == '0'){
                    h=1;
                }else if(c4 != '?' && c44 != '?' && c4 >= c44){
                    h=1;
                }
            }
        }
        if(c3 == '?' && c4 == '?'){
            m1 = "59";
        }else if(c3 == '?'){
            m1 = "5" + c4;
        }else if(c4 == '?'){
            m1 = c3 + "9";
        }
        if(c33 == '?' && c44 == '?'){
            m2 = "00";
        }else if(c33 == '?'){
            m2 = "0" + c44;
        }else if(c44 == '?'){
            m2 = c33 + "0";
        }
        int M1 = Integer.parseInt(m1);
        int M2 = Integer.parseInt(m2);
        int m = M2 - M1;
        if(M1 >= M2 && h == 0){
            m = 1;
        }else if(M1 > M2 && h != 0){
            h--;
            m = (60-M1) + M2;
        }
        return h*60 + m;
    }
    
    public static int max(String s1, String s2){
        String[] split1 = s1.split(":");
        String h1 = split1[0];
        String m1 = split1[1];
        char c1 = h1.charAt(0), c2 = h1.charAt(1);
        if(c1 == '?' && c2 == '?'){
            h1 = "00";
        }else if(c1 == '?'){
            h1 = "0" + c2;
        }else if(c2 == '?'){
            h1 = c1 + "0";
        }
        int H1 = Integer.parseInt(h1);
        char c3 = m1.charAt(0), c4 = m1.charAt(1);
        if(c3 == '?' && c4 == '?'){
            m1 = "00";
        }else if(c3 == '?'){
            m1 = "0" + c4;
        }else if(c4 == '?'){
            m1 = c3 + "0";
        }
        int M1 = Integer.parseInt(m1);
        String[] split2 = s2.split(":");
        String h2 = split2[0];
        String m2 = split2[1];
        char c11 = h2.charAt(0), c22 = h2.charAt(1);
        if(c11 == '?' && c22 == '?'){
            h2 = "23";
        }else if(c11 == '?'){
            if(c22 <= '3'){
                h2 = "2" + c22;
            }else
                h2 = "1" + c22;
            
        }else if(c22 == '?'){
            if(c11 == '0' || c11 == '1'){
                h2 = c11 + "9";
            }else
                h2 = "23";
            
        }
        int H2 = Integer.parseInt(h2);
        char c33 = m2.charAt(0), c44 = m2.charAt(1);
        if(c33 == '?' && c44 == '?'){
            m2 = "59";
        }else if(c33 == '?'){
            m2 = "5" + c44;
        }else if(c44 == '?'){
            m2 = c33 + "9";
        }
        int M2 = Integer.parseInt(m2);
        int h = H2-H1;
        int m = M2-M1;
        return h*60 + m;
    }
    
}
全部评论

相关推荐

点赞 评论 收藏
分享
就用这个吧:支持多益再加一个空气使用费
点赞 评论 收藏
分享
评论
7
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务