1736. Latest Time by Replacing Hidden Digits

Difficulty:
Related Topics:
Similar Questions:

    Problem

    You are given a string time in the form of hh:mm, where some of the digits in the string are hidden (represented by ?).

    The valid times are those inclusively between 00:00 and 23:59.

    Return the latest valid time you can get from time** by replacing the hidden** digits.

      Example 1:

    Input: time = "2?:?0"
    Output: "23:50"
    Explanation: The latest hour beginning with the digit '2' is 23 and the latest minute ending with the digit '0' is 50.
    

    Example 2:

    Input: time = "0?:3?"
    Output: "09:39"
    

    Example 3:

    Input: time = "1?:22"
    Output: "19:22"
    

      Constraints:

    Solution (Java)

    class Solution {
        public String maximumTime(String time) {
            StringBuilder sb = new StringBuilder();
            String[] strs = time.split(":");
            String hour = strs[0];
            String min = strs[1];
            if (hour.charAt(0) == '?') {
                if (hour.charAt(1) == '?') {
                    sb.append("23");
                } else if (hour.charAt(1) > '3') {
                    sb.append("1");
                    sb.append(hour.charAt(1));
                } else {
                    sb.append("2");
                    sb.append(hour.charAt(1));
                }
            } else if (hour.charAt(0) == '0' || hour.charAt(0) == '1') {
                if (hour.charAt(1) == '?') {
                    sb.append(hour.charAt(0));
                    sb.append("9");
                } else {
                    sb.append(hour);
                }
            } else if (hour.charAt(0) == '2') {
                if (hour.charAt(1) == '?') {
                    sb.append("23");
                } else {
                    sb.append(hour);
                }
            }
            sb.append(":");
            if (min.charAt(0) == '?') {
                if (min.charAt(1) == '?') {
                    sb.append("59");
                } else {
                    sb.append("5");
                    sb.append(min.charAt(1));
                }
                return sb.toString();
            }
            sb.append(min.charAt(0));
            if (min.charAt(1) == '?') {
                sb.append("9");
            } else {
                sb.append(min.charAt(1));
            }
            return sb.toString();
        }
    }
    

    Explain:

    nope.

    Complexity: