Dada una cadena calle y un entero nortela tarea es imprimir todas las subcadenas posibles de longitud N.
Ejemplos:
Aporte: str = “geeksforgeeks”, N = 3
Producción: gee eek eks ksf sfo para org rge gee eek eks
Explicaciones: Todas las subcadenas posibles de longitud 3 son “gee”, “eek”, “eks”, “ksf”, “sfo”, “for”, “org”, “rge”, “gee”, “eek” y ” eks”.Aporte: cadena = “GFG”, N = 2
Producción: GF FG
Explicaciones: Todas las subcadenas posibles de longitud 2 son “GF”, “FG”
Método 1: Usar el corte
Acercarse: Para resolver el problema, siga los siguientes pasos:
- Inicialice una variable ‘n’ a la longitud deseada de las subcadenas.
- Use un bucle for para iterar a través de los caracteres de la cadena authentic, comenzando desde el primer carácter.
- En cada iteración del bucle, utilice el corte para extraer una subcadena de longitud ‘n’ de la cadena authentic, comenzando por el carácter precise. El corte se puede realizar utilizando la sintaxis ‘cadena (inicio: last)’ donde el inicio y el last son los índices del primer y último carácter de la subcadena, respectivamente.
- En cada iteración, la variable ‘i’ será el índice inicial de la subcadena, y ‘i + n’ será el índice last de la subcadena, por lo que la subcadena se puede extraer utilizando la sintaxis de corte ‘cadena (i: i + n)’.
- Imprima o almacene la subcadena extraída para su posterior procesamiento.
- Repita el proceso para todos los caracteres de la cadena authentic.
A continuación se muestra la implementación del enfoque anterior:
C++
|
Java
|
Python3
|
C#
|
JavaScript
|
gee eek eks ksf sfo for org rge gee eek eks
Complejidad del tiempo: O(|cadena|*n), donde |cadena| es la longitud de la cadena
Espacio Auxiliar: En)
Método 2: usar un bucle for
Acercarse: Para resolver el problema, siga los siguientes pasos:
- Inicializar una variable ‘norte‘ a la longitud deseada de las subcadenas.
- Use un bucle for para iterar a través de los caracteres de la cadena authentic, comenzando desde el primer carácter.
- En cada iteración del ciclo externo, inicialice una variable vacía ‘subcadena‘ para almacenar la subcadena extraída.
- Use un bucle for anidado para iterar a través de los siguientes caracteres ‘n’ de la cadena authentic, comenzando desde el carácter precise.
- En cada iteración del ciclo interno, agregue el carácter precise a la variable ‘subcadena’.
- Una vez que finaliza el bucle interno, imprima o almacene la subcadena extraída para su posterior procesamiento.
- Repita el proceso para todos los caracteres de la cadena authentic.
A continuación se muestra la implementación del enfoque anterior:
C++
|
Java
|
Python3
|
C#
|
JavaScript
|
gee eek eks ksf sfo for org rge gee eek eks
Complejidad del tiempo: O(|cadena|*n), donde |cadena| es la longitud de la cadena
Espacio Auxiliar: En)
Método 3: usar la comprensión de listas (solo para Python)
Acercarse: Para resolver el problema, siga los siguientes pasos:
- Inicialice una variable ‘n’ a la longitud deseada de las subcadenas.
- Use una lista de comprensión para iterar a través de los caracteres de la cadena authentic y extraer subcadenas de longitud ‘n’ en una línea.
- La comprensión de lista utiliza la sintaxis de corte ‘cadena (inicio: last)’ donde el inicio y el last son los índices del primer y último carácter de la subcadena, respectivamente.
- La variable ‘i’ será el índice inicial de la subcadena y ‘i+n’ será el índice last de la subcadena, por lo que la subcadena se puede extraer usando la sintaxis de corte ‘cadena (i:i+n)’ dentro la lista de comprensión.
- Asigne la salida de la lista de comprensión a una variable, por ejemplo, subcadenas = (cadena (i: i + n) para i en el rango (len (cadena) – n + 1))
- Luego puede imprimir o acceder a subcadenas individuales de la lista mediante la indexación.
A continuación se muestra la implementación del enfoque anterior:
Python3
|
('gee', 'eek', 'eks', 'ksf', 'sfo', 'for', 'org', 'rge', 'gee', 'eek', 'eks')
Complejidad del tiempo: O(|cadena|*n), donde |cadena| es la longitud de la cadena
Espacio Auxiliar: O(|cadena|*n)
NÓTESE BIEN: Es importante tener en cuenta que el enfoque anterior solo funcionará si la longitud de la cadena es mayor que n, de lo contrario arrojará un error de índice fuera de rango.