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

• Last Updated : 07 Feb, 2023

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

 `// C program for above approach``#include ``#include ` `// 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!

My Personal Notes arrow_drop_up