GFG App
Open App
Browser
Continue

# 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:39
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 the above approach`   `#include ` `using` `namespace` `std;`   `// Function to find the maximum` `// time possible by replacing` `// each '_' with any digit` `string maximumTime(string 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'``;` `        ``}`   `        ``// Otherwise, update s[0] = 1` `        ``else` `{` `            ``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 the modified string` `    ``return` `s;` `}`   `// Driver Code` `int` `main()` `{` `    ``string S = ``"0_:4_"``;` `    ``cout << maximumTime(S);`   `    ``return` `0;` `}`

## Java

 `// Java program for the above approach` `class` `GFG{` `    `  `// Function to find the maximum` `// time possible by replacing` `// each '_' with any digit` `static` `void` `maximumTime(String str)` `{` `    ``char` `[]s = str.toCharArray();` `    `  `    ``// 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'``;` `        ``}`   `        ``// Otherwise, update s[0] = 1` `        ``else` `        ``{` `            ``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'``;` `    ``}`   `    ``// Print the modified string` `    ``for``(``int` `i = ``0``; i < s.length; i++)` `        ``System.out.print(s[i]);` `}`   `// Driver Code` `static` `public` `void` `main (String []args)` `{` `    ``String S = ``"0_:4_"``;` `    `  `    ``maximumTime(S);` `}` `}`   `// This code is contributed by AnkThon`

## Python3

 `# Python3 program for the above approach`   `# Function to find the maximum` `# time possible by replacing` `# each '_' with any digit` `def` `maximumTime(s):` `    `  `    ``s ``=` `list``(s)` `    ``# If the first character is '_'` `    ``if` `(s[``0``] ``=``=` `'_'``):` `        `  `        ``# If s[1] is '_' or` `        ``# s[1] is less than 4` `        ``if` `((s[``1``] ``=``=` `'_'``) ``or` `(s[``1``] >``=` `'0'` `and` `                              ``s[``1``] < ``'4'``)):` `                                  `  `            ``# Update s[0] as 2` `            ``s[``0``] ``=` `'2'`   `        ``# Otherwise, update s[0] = 1` `        ``else``:` `            ``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 the modified string` `    ``s ``=` `''.join(s)` `    ``return` `s`   `# Driver Code` `if` `__name__ ``=``=` `'__main__'``:` `    `  `    ``S ``=` `"0_:4_"` `    `  `    ``print``(maximumTime(S))` `    `  `# This code is contributed by ipg2016107`

## C#

 `// C# program for the above approach` `using` `System;`   `class` `GFG{` `    `  `// Function to find the maximum` `// time possible by replacing` `// each '_' with any digit` `static` `void` `maximumTime(``string` `str)` `{` `    ``char` `[]s = str.ToCharArray();` `    `  `    ``// 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'``;` `        ``}`   `        ``// Otherwise, update s[0] = 1` `        ``else` `        ``{` `            ``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'``;` `    ``}`   `    ``// Print the modified string` `    ``for``(``int` `i = 0; i < s.Length; i++)` `        ``Console.Write(s[i]);` `}`   `// Driver Code` `static` `public` `void` `Main ()` `{` `    ``string` `S = ``"0_:4_"``;` `    `  `    ``maximumTime(S);` `}` `}`   `// This code is contributed by AnkThon`

## Javascript

 ``

## 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)

My Personal Notes arrow_drop_up