Given a string S representing a time in 24 hours format, with ‘_’ placed at positions of some digits, the task is to find the maximum time possible by replacing the characters ‘_’ with any digit.
Examples:
Input: S = “0_:4_”
Output: 09:49
Explanation: Replacing the characters S[1] and S[4] with ‘9’ modifies the string to “09:49”, which is the maximum time possible.Input: S = “__:__”
Output: 23:59
Approach: The given problem can be solved by greedily selecting the digits for each ‘_’ present in the string. Follow the steps below to solve the problem:
- If the character S[0] is equal to ‘_’ and S[1] is either ‘_’ or is less than 4, then assign ‘2‘ to S[0]. Otherwise, assign ‘1’ to S[0].
- If the character S[1] is equal to ‘_’ and S[0] is ‘2’, then assign ‘3’ to S[1]. Otherwise, assign ‘9‘ to S[1].
- If the character S[3] is equal to ‘_’, then assign ‘5’ to S[3].
- If the character S[4] is equal to ‘_’, then assign ‘9‘ to S[4].
- After completing the above steps, print the modified string S.
Below is the implementation of the above approach:
// C program for above approach #include <stdio.h> #include <string.h> // Function to find the maximum // time possible by replacing // each '_' with any digit char * maximumTime( char s[])
{ // If the first character is '_'
if (s[0] == '_' ) {
// If s[1] is '_' or
// s[1] is less than 4
if ((s[1] == '_' ) || (s[1] >= '0' && s[1] < '4' )) {
// Update s[0] as 2
s[0] = '2' ;
}
else { // Otherwise, update s[0] = 1
s[0] = '1' ;
}
}
// If s[1] is equal to '_'
if (s[1] == '_' ) {
// If s[0] is equal to '2'
if (s[0] == '2' ) {
s[1] = '3' ;
}
// otherwise
else {
s[1] = '9' ;
}
}
// If S[3] is equal to '_'
if (s[3] == '_' ) {
s[3] = '5' ;
}
// If s[4] is equal to '_'
if (s[4] == '_' ) {
s[4] = '9' ;
}
return s; // Return the modified string
} int main()
{ char S[] = "0_:4_" ;
printf ( "%s" , maximumTime(S));
return 0;
} // This code is contributed by Tapesh (tapeshdua420) |
09:49
Time Complexity: O(1)
Auxiliary Space: O(1)
Please refer complete article on Maximize time by replacing ‘_’ in a given 24 Hour format time for more details!