Wednesday, July 3, 2024
HomeData ModellingData Structure & AlgorithmMaximize 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!

Nicole Veronica Rubhabha
Nicole Veronica Rubhabha
A highly competent and organized individual DotNet developer with a track record of architecting and developing web client-server applications. Recognized as a personable, dedicated performer who demonstrates innovation, communication, and teamwork to ensure quality and timely project completion. Expertise in C#, ASP.Net, MVC, LINQ, EF 6, Web Services, SQL Server, MySql, Web development,
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments