Easy
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:
time
is in the format hh:mm
.public 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();
}
}