Dado un entero x , la tarea es encontrar si cada cambio de ciclo k en el elemento produce un número mayor o igual que el mismo elemento.
Un desplazamiento k-cíclico de un entero x es una función que elimina los últimos k dígitos de x y los inserta en su comienzo.
Por ejemplo, los cambios k-cíclicos de 123 son 312 para k=1 y 231 para k=2 . Imprima Sí si se cumple la condición dada; de lo contrario, imprima No.
Ejemplos:
Entrada: x = 123
Salida: Sí
Los desplazamientos k-cíclicos de 123 son 312 para k=1 y 231 para k=2.
Tanto 312 como 231 son mayores que 123.
Entrada: 2214
Salida: No
El cambio cíclico k de 2214 cuando k=2 es 1422, que es menor que 2214
Enfoque: simplemente encuentre todos los k cambios cíclicos posibles del número y verifique si todos son mayores que el número dado o no.
A continuación se muestra la implementación del enfoque anterior:
C++
// CPP implementation of the approach #include<bits/stdc++.h> using namespace std; void CheckKCycles(int n, string s) { bool ff = true; int x = 0; for (int i = 1; i < n; i++) { // Splitting the number at index i // and adding to the front x = (s.substr(i) + s.substr(0, i)).length(); // Checking if the value is greater than // or equal to the given value if (x >= s.length()) { continue; } ff = false; break; } if (ff) { cout << ("Yes"); } else { cout << ("No"); } } // Driver code int main() { int n = 3; string s = "123"; CheckKCycles(n, s); return 0; } /* This code contributed by Rajput-Ji */
Java
// Java implementation of the approach class GFG { static void CheckKCycles(int n, String s) { boolean ff = true; int x = 0; for (int i = 1; i < n; i++) { // Splitting the number at index i // and adding to the front x = (s.substring(i) + s.substring(0, i)).length(); // Checking if the value is greater than // or equal to the given value if (x >= s.length()) { continue; } ff = false; break; } if (ff) { System.out.println("Yes"); } else { System.out.println("No"); } } // Driver code public static void main(String[] args) { int n = 3; String s = "123"; CheckKCycles(n, s); } } /* This code contributed by PrinciRaj1992 */
Python
# Python3 implementation of the approach def CheckKCycles(n, s): ff = True for i in range(1, n): # Splitting the number at index i # and adding to the front x = int(s[i:] + s[0:i]) # Checking if the value is greater than # or equal to the given value if (x >= int(s)): continue ff = False break if (ff): print("Yes") else: print("No") n = 3 s = "123" CheckKCycles(n, s)
C#
// C# implementation of the approach using System; class GFG { static void CheckKCycles(int n, String s) { bool ff = true; int x = 0; for (int i = 1; i < n; i++) { // Splitting the number at index i // and adding to the front x = (s.Substring(i) + s.Substring(0, i)).Length; // Checking if the value is greater than // or equal to the given value if (x >= s.Length) { continue; } ff = false; break; } if (ff) { Console.WriteLine("Yes"); } else { Console.WriteLine("No"); } } // Driver code public static void Main(String[] args) { int n = 3; String s = "123"; CheckKCycles(n, s); } } // This code has been contributed by 29AjayKumar
PHP
<?php // PHP implementation of the approach function CheckKCycles($n, $s) { $ff = true; $x = 0; for ($i = 1; $i < $n; $i++) { // Splitting the number at index i // and adding to the front $x = strlen(substr($s, $i).substr($s, 0, $i)); // Checking if the value is greater than // or equal to the given value if ($x >= strlen($s)) { continue; } $ff = false; break; } if ($ff) { print("Yes"); } else { print("No"); } } // Driver code $n = 3; $s = "123"; CheckKCycles($n, $s); // This code contributed by mits ?>
Javascript
<script> // javascript implementation of the approach function CheckKCycles(n, s) { var ff = true; var x = 0; for (i = 1; i < n; i++) { // Splitting the number at index i // and adding to the front x = (s.substring(i) + s.substring(0, i)).length; // Checking if the value is greater than // or equal to the given value if (x >= s.length) { continue; } ff = false; break; } if (ff) { document.write("Yes"); } else { document.write("No"); } } // Driver code var n = 3; var s = "123"; CheckKCycles(n, s); // This code is contributed by 29AjayKumar </script>
Yes
Complejidad de tiempo: O(N 2 ), donde N representa la longitud de la string dada.
La complejidad temporal del programa es O(N 2 ) porque primero ejecuta un ciclo para atravesar la string y dentro de esa función de substring se usa.
Espacio auxiliar: O(1), no se requiere espacio adicional, por lo que es una constante.