Open In App

C Program to Maximize Time by Replacing ‘_’ in a Given 24-Hour Format Time

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: 

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)

Output
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!


Article Tags :