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:
- Si MM < inverso (HH) , la salida será HH como horas e inverso (HH) como minutos.
- Si HH = 23 y MM ≥ 32 , la salida será a las 00:00, es decir, a las 12:00 a. m .
- 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>
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