LeetCode-in-Java

2437. Number of Valid Clock Times

Easy

You are given a string of length 5 called time, representing the current time on a digital clock in the format "hh:mm". The earliest possible time is "00:00" and the latest possible time is "23:59".

In the string time, the digits represented by the ? symbol are unknown, and must be replaced with a digit from 0 to 9.

Return an integer answer, the number of valid clock times that can be created by replacing every ?with a digit from 0 to 9.

Example 1:

Input: time = “?5:00”

Output: 2

Explanation: We can replace the ? with either a 0 or 1, producing “05:00” or “15:00”. Note that we cannot replace it with a 2, since the time “25:00” is invalid. In total, we have two choices.

Example 2:

Input: time = “0?:0?”

Output: 100

Explanation: Each ? can be replaced by any digit from 0 to 9, so we have 100 total choices.

Example 3:

Input: time = “??:??”

Output: 1440

Explanation: There are 24 possible choices for the hours, and 60 possible choices for the minutes. In total, we have 24 * 60 = 1440 choices.

Constraints:

Solution

public class Solution {
    public int countTime(String time) {
        int[] counts = new int[] {3, 10, 0, 6, 10};
        char[] ch = time.toCharArray();
        int result = 1;
        if (ch[0] == '2') {
            counts[1] = 4;
        }
        if ((ch[1] - '0') > 3) {
            counts[0] = 2;
        }
        if (ch[0] == '?' && ch[1] == '?') {
            counts[0] = 1;
            counts[1] = 24;
        }
        for (int i = 0; i < 5; i++) {
            char ch1 = ch[i];
            if (ch1 == '?') {
                result *= counts[i];
            }
        }
        return result;
    }
}