Wednesday, January 15, 2025
Google search engine
HomeData Modelling & AIMaximize time by replacing ‘_’ in a given 24 Hour format time

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 <bits/stdc++.h>
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




<script>
// javascript program for the above approach
 
      
// Function to find the maximum
// time possible by replacing
// each '_' with any digit
 
     function maximumTime(str)
{
     var s = str.split("");
      
    // 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(var i = 0; i < s.length; i++)
        document.write(s[i]);
}
  
// Driver Code
    var S = "0_:4_";   
    maximumTime(S);
 
// This code is contributed by bunnyram19.
</script>


C




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

 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Dominic Rubhabha-Wardslaus
Dominic Rubhabha-Wardslaushttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Recent Comments