Encuentra el tiempo que es palindrómico y viene después del tiempo dado

Dada una string str que almacena la hora en formato de 24 horas como HH:MM tal que 0 ≤ HH ≤ 23 y 0 ≤ MM ≤ 59 . La tarea es encontrar el siguiente tiempo más cercano que es un palíndromo cuando se lee como una string. Si no existe tal string, imprima -1 .
Ejemplos: 
 

Entrada: str = «21:12» 
Salida: 22:22 
El único tiempo palindrómico posible en la hora dada es 21:12 
pero no es mayor que el tiempo dado, por lo que la salida será 
el tiempo palindrómico en la próxima hora, es decir, 22 :22
Entrada: str = “23:32” 
Salida: -1 
 

Enfoque: Hay tres casos posibles: 
 

  1. Si MM < inverso (HH) , la salida será HH como horas e inverso (HH) como minutos.
  2. Si HH = 23 y MM ≥ 32 , la salida será a las 00:00, es decir, a las 12:00 a. m .
  3. De lo contrario, la salida será HH + 1 como horas y viceversa (HH + 1) como minutos.

A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
 
// Function to return the required time
string getTime(string s, int n)
{
    // To store the resultant time
    string res;
 
    // Hours are stored in h as integer
    int h = stoi(s.substr(0, 2));
 
    // Minutes are stored in m as integer
    int m = stoi(s.substr(3, 2));
 
    // Reverse of h
    int rev_h = (h % 10) * 10 + ((h % 100) - (h % 10)) / 10;
 
    // Reverse of h as a string
    string rev_hs = to_string(rev_h);
 
    if (h == 23 && m >= 32) {
        res = "-1";
    }
 
    // If MM < reverse of (HH)
    else if (m < rev_h) {
        string temp;
 
        // 0 is added if HH < 10
        if (h < 10)
            temp = "0";
        temp = temp + to_string(h);
 
        // 0 is added if rev_h < 10
        if (rev_h < 10)
            res = res + temp + ":0" + rev_hs;
        else
            res = res + temp + ":" + rev_hs;
    }
    else {
 
        // Increment hours
        h++;
 
        // Reverse of the hour after incrementing 1
        rev_h = (h % 10) * 10 + ((h % 100) - (h % 10)) / 10;
        rev_hs = to_string(rev_h);
 
        string temp;
 
        // 0 is added if HH < 10
        if (h < 10)
            temp = "0";
        temp = temp + to_string(h);
 
        // 0 is added if rev_h < 10
        if (rev_h < 10)
            res = res + temp + ":0" + rev_hs;
        else
            res = res + temp + ":" + rev_hs;
    }
    return res;
}
 
// Driver code
int main()
{
    string s = "21:12";
    int n = s.length();
 
    cout << getTime(s, n);
 
    return 0;
}

Java

// Java implementation of the approach
import java.util.*;
 
class GFG
{
 
    // Function to return the required time
    static String getTime(String s, int n)
    {
 
        // To store the resultant time
        String res = "";
 
        // Hours are stored in h as integer
        int h = Integer.parseInt(s.substring(0, 0 + 2));
 
        // Minutes are stored in m as integer
        int m = Integer.parseInt(s.substring(3, 3 + 2));
 
        // Reverse of h
        int rev_h = (h % 10) * 10 +
                   ((h % 100) - (h % 10)) / 10;
 
        // Reverse of h as a string
        String rev_hs = Integer.toString(rev_h);
        if (h == 23 && m >= 32)
        {
            res = "-1";
        }
         
        // If MM < reverse of (HH)
        else if (m < rev_h)
        {
            String temp = "";
 
            // 0 is added if HH < 10
            if (h < 10)
                temp = "0";
            temp = temp + Integer.toString(h);
 
            // 0 is added if rev_h < 10
            if (rev_h < 10)
                res = res + temp + ":0" + rev_hs;
            else
                res = res + temp + ":" + rev_hs;
        }
        else
        {
 
            // Increment hours
            h++;
 
            // Reverse of the hour after incrementing 1
            rev_h = (h % 10) * 10 + ((h % 100) -
                    (h % 10)) / 10;
            rev_hs = Integer.toString(rev_h);
 
            String temp = "";
 
            // 0 is added if HH < 10
            if (h < 10)
                temp = "0";
            temp = temp + Integer.toString(h);
 
            // 0 is added if rev_h < 10
            if (rev_h < 10)
                res = res + temp + ":0" + rev_hs;
            else
                res = res + temp + ":" + rev_hs;
        }
        return res;
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        String s = "21:12";
        int n = s.length();
        System.out.println(getTime(s, n));
    }
}
 
// This code is contributed by
// sanjeev2552

Python3

# Python3 implementation of the approach
 
# Function to return the required time
def getTime(s, n) :
 
    # Hours are stored in h as integer
    h = int(s[0 : 2]);
 
    # Minutes are stored in m as integer
    m = int(s[3 : 5]);
 
    # Reverse of h
    rev_h = (h % 10) * 10 + ((h % 100) - (h % 10)) // 10;
 
    # Reverse of h as a string
    rev_hs = str(rev_h)
     
    temp = ""
    res  = ""
     
    if (h == 23 and m >= 32) :
        res = "-1";
     
 
    # If MM < reverse of (HH)
    elif (m < rev_h) :
 
        # 0 is added if HH < 10
        if (h < 10) :
            temp = "0";
             
        temp = temp + str(h);
 
        # 0 is added if rev_h < 10
        if (rev_h < 10) :
            res = res + temp + ":0" + rev_hs;
        else :
            res = res + temp + ":" + rev_hs;
     
    else :
         
        # Increment hours
        h += 1
 
        # Reverse of the hour after incrementing 1
        rev_h = (h % 10) * 10 + ((h % 100) - (h % 10)) //10;
         
        rev_hs = str(rev_h);
 
        # 0 is added if HH < 10
        if (h < 10) :
            temp = "0";
             
        temp = temp + str(h);
 
        # 0 is added if rev_h < 10
        if (rev_h < 10) :
            res = res + temp + ":0" + rev_hs;
        else :
            res = res + temp + ":" + rev_hs;
     
    return res;
 
 
# Driver code
if __name__ == "__main__" :
 
    s = "21:12";
    n = len(s);
 
    print(getTime(s, n));
 
    # This code is contributed by AnkitRai01

PHP

<?php
 
//PHP implementation of the approach
  
// Function to return the required time
function getTime( $s, $n)
{
    // To store the resultant time
    $res="";
  
    // Hours are stored in h as integer
    $h = intval($s.substr(0, 2));
  
    // Minutes are stored in m as integer
    $m = intval($s.substr(3, 2));
  
    // Reverse of h
    $rev_h = ($h % 10) * 10 + (($h % 100) - ($h % 10)) / 10;
  
    // Reverse of h as a string
    $rev_hs = strval($rev_h);
  
    if ($h == 23 && $m >= 32) {
        $res = "-1";
    }
  
    // If MM < reverse of (HH)
    else if ($m < $rev_h) {
        $temp="";
  
        // 0 is added if HH < 10
        if ($h < 10)
            $temp = "0";
        $temp = $temp . strval($h);
  
        // 0 is added if rev_h < 10
        if ($rev_h < 10)
            $res = $res . $temp . ":0" . $rev_hs;
        else
            $res = $res. $temp .":" . $rev_hs;
    }
    else {
  
        // Increment hours
        $h++;
  
        // Reverse of the hour after incrementing 1
        $rev_h = ($h % 10) * 10 + (($h % 100) - ($h % 10)) / 10;
        $rev_hs = strval($rev_h);
  
        $temp="";
  
        // 0 is added if HH < 10
        if ($h < 10)
            $temp = "0";
        $temp = $temp . strval($h);
  
        // 0 is added if rev_h < 10
        if ($rev_h < 10)
            $res = $res . $temp . ":0" . $rev_hs;
        else
            $res = $res . $temp . ":" . $rev_hs;
    }
    return $res;
}
  
// Driver code
 
    $s = "21:12";
    $n = strlen($s);
  
    echo getTime($s, $n);
  
    return 0;
 
// This code is contributed by ChitraNayal
?>

Javascript

<script>
 
// JavaScript implementation of the approach
 
 // Function to return the required time
    function getTime(s,n)
    {
    // To store the resultant time
        let res = "";
   
        // Hours are stored in h as integer
        let h = parseInt(s.substring(0, 0 + 2));
   
        // Minutes are stored in m as integer
        let m = parseInt(s.substring(3, 3 + 2));
   
        // Reverse of h
       let rev_h = (h % 10) * 10 +
                   ((h % 100) - (h % 10)) / 10;
   
        // Reverse of h as a string
        let rev_hs = (rev_h).toString();
        if (h == 23 && m >= 32)
        {
            res = "-1";
        }
           
        // If MM < reverse of (HH)
        else if (m < rev_h)
        {
            let temp = "";
   
            // 0 is added if HH < 10
            if (h < 10)
                temp = "0";
            temp = temp + h.toString();
   
            // 0 is added if rev_h < 10
            if (rev_h < 10)
                res = res + temp + ":0" + rev_hs;
            else
                res = res + temp + ":" + rev_hs;
        }
        else
        {
   
            // Increment hours
            h++;
   
            // Reverse of the hour after incrementing 1
            rev_h = (h % 10) * 10 + ((h % 100) -
                    (h % 10)) / 10;
            rev_hs = (rev_h).toString();
   
            let temp = "";
   
            // 0 is added if HH < 10
            if (h < 10)
                temp = "0";
            temp = temp + h.toString();
   
            // 0 is added if rev_h < 10
            if (rev_h < 10)
                res = res + temp + ":0" + rev_hs;
            else
                res = res + temp + ":" + rev_hs;
        }
        return res;
    }
 
 // Driver Code
    let  s = "21:12";
    let n = s.length;
    document.write(getTime(s, n));
     
 
// This code is contributed by avanitrachhadiya2155
 
</script>
Producción: 

22:22

 

Publicación traducida automáticamente

Artículo escrito por AdeshSingh1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *