GoogleOA_WatchTime [source code]


public class GoogleOA_WatchTime {
static
/******************************************************************************/
class Solution {
    public String solution(String S) {
        int[] digits = new int[4];
        int[] counts = new int[10];
        for (int i = 0; i < 4; i++) {
            digits[i] = (i > 1 ? S.charAt (i + 1) : S.charAt (i)) - '0';
            counts[digits[i]]++;
        }
        int hour = digits[0] * 10 + digits[1], minute = digits[2] * 10 + digits[3];
        for (int i = 0; i < 24 * 60; i++) {
            if (++minute == 60) {
                minute = 0;
                if (++hour == 24)
                    hour = 0;
            }
            if (isPermutation (counts, hour, minute))
                break;
        }
        return String.format ("%d%d:%d%d", hour / 10, hour % 10, minute / 10, minute % 10);
    }

    boolean isPermutation (int[] counts, int hour, int minute) {
        int[] new_counts = new int[counts.length];
        new_counts[hour / 10]++;
        new_counts[hour % 10]++;
        new_counts[minute / 10]++;
        new_counts[minute % 10]++;
        for (int i = 0; i < counts.length; i++) {
            if (counts[i] != new_counts[i])
                return false;
        }
        return true;
    }
}
/******************************************************************************/

    public static void main(String[] args) {
        GoogleOA_WatchTime.Solution tester = new GoogleOA_WatchTime.Solution();
        String[] inputs = {
            "12:34", "12:43",
            "11:00", "00:11",
            "00:01", "00:10",
            "23:59", "23:59",
            "23:58", "23:58",
        };
        for (int i = 0; i < inputs.length / 2; i++) {
            System.out.println (Printer.separator ());
            String S = inputs [2 * i], ans = inputs[2 * i + 1], output = tester.solution (S);
            System.out.printf ("%s -> %s, expected: %s\n", 
                S, Printer.wrap (output, output.equals (ans) ? 92 : 91), ans
            );
        }
    }
}

Problem Description

results matching ""

    No results matching ""