Given a string S representing the time in the 24-hour format “HH:MM” such that some digits are represented by ‘?’, the task is to replace ‘?’ with any possible digits such that the resultant time is the maximum possible time.
Examples:
Input: S = “?4:5?”
Output: 14:59
Explanation:
After replacing the first and the second ‘?’ with the digits 1 and 9, modifies the given time to “14:59”, which is maximum among all the possible time that can be made by replacing ‘?’.Input: S = “0?:??”
Output: 09:59
Approach: The given problem can be solved by traversing the given string S and replace the ‘?’ in such a way that the substring before the character ‘:’ lies over the range [0, 23] and the substring after the ‘:’ must be at most 59 and print the maximum time obtained. Follow the below steps to solve the given problem:
- If the value of the character S at the index 0 is ‘?’ and the character at the index 1 is ‘3’ or ‘?’, then update the value of S[0] as ‘2’. Otherwise, update the value of S[0] as ‘1’.
- If the value of the character S at the index 1 is ‘?’ and the character at the index 0 is not ‘2’, then update the value of S[1] as ‘9’. Otherwise, update the value of S[1] as ‘3’.
- If the value of the character S at the index 3 is ‘?’, then update the value of S[3] as ‘5’.
- If the value of the character S at the index 4 is ‘?’, then update the value of S[4] as ‘9’.
- After completing the above steps, print the value of the string S as the resultant time.
Below is the implementation of the above approach:
// C++ program for the above approach #include <iostream> using namespace std;
// Function to find the maximum time // by replacing '?' by any digits void maxTime(string s)
{ // Convert the string to the
// character array
// If the 0th index is '?'
if (s[0] == '?' ) {
if (s[1] <= '3' || s[1] == '?' )
s[0] = '2' ;
else
s[0] = '1' ;
}
// If the 1st index is '?'
if (s[1] == '?' ) {
if (s[0] != '2' ) {
s[1] = 9;
}
else
s[1] = 3;
}
// If the 3rd index is '?'
if (s[3] == '?' )
s[3] = '5' ;
// If the 4th index is '?'
if (s[4] == '?' )
s[4] = '9' ;
// Return new string
cout << s << endl;
} // Driver Code int main()
{ string S = "?4:5?" ;
maxTime(S);
return 0;
} // This code is contributed by Potta Lokesh |
// Java program for the above approach public class Main {
// Function to find the maximum time
// by replacing '?' by any digits
public static void maxTime(String S)
{
// Convert the string to the
// character array
char [] s = S.toCharArray();
// If the 0th index is '?'
if (s[ 0 ] == '?' ) {
if (s[ 1 ] <= '3' || s[ 1 ] == '?' )
s[ 0 ] = '2' ;
else
s[ 0 ] = '1' ;
}
// If the 1st index is '?'
if (s[ 1 ] == '?' ) {
if (s[ 0 ] != '2' ) {
s[ 1 ] = 9 ;
}
else
s[ 1 ] = 3 ;
}
// If the 3rd index is '?'
if (s[ 3 ] == '?' )
s[ 3 ] = '5' ;
// If the 4th index is '?'
if (s[ 4 ] == '?' )
s[ 4 ] = '9' ;
// Return new string
System.out.println(
new String(s));
}
// Driver Code
public static void main(String[] args)
{
String S = "?4:5?" ;
maxTime(S);
}
} // This code is contributed by lokeshpotta20. |
# Python3 program for the above approach # Function to find the maximum time # by replacing '?' by any digits def maxTime(s):
# Convert the string to the
# character array
# If the 0th index is '?'
s = list (s)
if (s[ 0 ] = = '?' ):
if (s[ 1 ] < = '3' or s[ 1 ] = = '?' ):
s[ 0 ] = '2'
else :
s[ 0 ] = '1'
# If the 1st index is '?'
if (s[ 1 ] = = '?' ):
if (s[ 0 ] ! = '2' ):
s[ 1 ] = 9
else :
s[ 1 ] = 3
# If the 3rd index is '?'
if (s[ 3 ] = = '?' ):
s[ 3 ] = '5'
# If the 4th index is '?'
if (s[ 4 ] = = '?' ):
s[ 4 ] = '9'
# Return new string
print ("".join(s))
# Driver Code S = "?4:5?"
maxTime(S) # This code is contributed by _saurabh_jaiswal |
// C# program for the above approach using System;
using System.Collections.Generic;
class gfg {
// Function to find the maximum time
// by replacing '?' by any digits
public static void maxTime(String S)
{
// Convert the string to the
// character array
char [] s = S.ToCharArray();
// If the 0th index is '?'
if (s[0] == '?' ) {
if (s[1] <= '3' || s[1] == '?' )
s[0] = '2' ;
else
s[0] = '1' ;
}
// If the 1st index is '?'
if (s[1] == '?' ) {
if (s[0] != '2' ) {
s[1] = '9' ;
}
else
s[1] = '3' ;
}
// If the 3rd index is '?'
if (s[3] == '?' )
s[3] = '5' ;
// If the 4th index is '?'
if (s[4] == '?' )
s[4] = '9' ;
// Return new string
Console.Write( new String(s));
}
// Driver Code
public static void Main(String[] args)
{
String S = "?4:5?" ;
maxTime(S);
}
} // This code is contributed by shivanisinghss2110 |
<script> // Javascript program for the above approach // Function to find the maximum time // by replacing '?' by any digits function maxTime(s)
{ // Convert the string to the
// character array
// If the 0th index is '?'
s = s.split( "" )
if (s[0] == '?' ) {
if (s[1] <= '3' || s[1] == '?' )
s[0] = '2' ;
else
s[0] = '1' ;
}
// If the 1st index is '?'
if (s[1] == '?' ) {
if (s[0] != '2' ) {
s[1] = 9;
}
else
s[1] = 3;
}
// If the 3rd index is '?'
if (s[3] == '?' )
s[3] = '5' ;
// If the 4th index is '?'
if (s[4] == '?' )
s[4] = '9' ;
// Return new string
document.write(s.join( "" ));
} // Driver Code let S = "?4:5?" ;
maxTime(S); // This code is contributed by gfgking </script> |
14:59
Time Complexity: O(1)
Auxiliary Space: O(1)