View Code of Problem 56

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int[] time1 = Arrays.stream(scanner.nextLine().split(":")).mapToInt((String s) -> {
            return Integer.valueOf(s);
        }).toArray();

        int[] time2 = Arrays.stream(scanner.nextLine().split(":")).mapToInt((String s) -> {
            return Integer.valueOf(s);
        }).toArray();


        int[] arr1 = time1;//first
        int[] arr2 = time2;//second
        int[] result = new int[3];
        for (int i = 0; i < 3; i++) {
            if (time1[i] > time2[i]) {
                arr1 = time1;
                arr2 = time2;
                break;
            } else if (time1[i] < time2[i]) {
                arr1 = time2;
                arr2 = time1;
                break;
            }
        }

        for (int i = 2; i >= 0; i--) {
            if (arr1[i] - arr2[i] < 0) {
                arr1[i - 1] = arr1[i - 1] - 1;
                if (arr1[i - 1] < 0) {
                    arr1[i - 2] = arr1[i - 2] - 1;
                    arr1[i - 1] = arr1[i - 1] + 60;
                }
                arr1[i] = arr1[i] + 60;
            }
            result[i] = arr1[i] - arr2[i];
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 3; i++) {
            if ((i == 1 || i == 2) && result[i] < 10) {
                sb.append("0").append(result[i]);
            } else {
                sb.append(result[i]);
            }
            if (i != 2) {
                sb.append(":");
            }
        }
        System.out.println(sb.toString());

    }

}

Double click to view unformatted code.


Back to problem 56