Programa Python para obtener el número de substrings repetidas consecutivas

Dada una substring K, la tarea es escribir un programa Python para encontrar la repetición de la string K en cada aparición consecutiva de K.

Ejemplo

Entrada: test_str = ‘geeksgeeks son geeksgeeksgeeks para todos los geeks’, K = «geeks»

Salida: [2, 3, 1]

Explicación : La primera consecución de ‘geeks’ es 2. 

Entrada: test_str = ‘geeksgeeks son geeksgeeksgeeksgeeks para todos los geeks’, K = «geeks»

Salida: [2, 4, 1]

Explicación: La primera consecución de ‘geeks’ es 2, la siguiente viene con 4 condenas de geeks.

Método 1: Usar split() + count() + comprensión de lista

Funciona solo para casos específicos en los que la consecución está separada por espacios. En esto, cada palabra se divide usando split(), y cada segmento se evalúa para el conteo de repeticiones usando count().

Python3

# Python3 code to demonstrate working of
# Number of repeated substrings in consecution
# Using split() + count() + list comprehension
 
# initializing string
test_str = 'geeksgeeks are geeksgeeksgeeks for all geeks'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing K
K = "geeks"
 
# count() counts repetition
res = [sub.count(K) for sub in test_str.split(' ') if sub.count(K) != 0]
 
# printing result
print("String repetitions : " + str(res))

Producción:

La string original es: geeksgeeks son geeksgeeksgeeks para todos los geeks

Repeticiones de strings: [2, 3, 1]

Complejidad de tiempo: O(n)

Complejidad espacial: O(n)

Método 2: Usando findall() + regex + len()

En esto, todas las ejecuciones se calculan para la repetición de la substring, y luego la división de la longitud por la longitud de la substring da la medida del número de repeticiones.  

Python3

# Python3 code to demonstrate working of
# Number of repeated substrings in consecution
# Using findall() + regex + len()
import re
 
# initializing string
test_str = 'geeksgeeksaregeeksgeeksgeeksforallgeeks'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing K
K = 'geeks'
n = len(K)
 
# getting regex
regx = re.compile(f'((?:{K})+)')
 
# getting repeats counts
# findall finding all substring joined repetitions
res = [len(occ) // n for occ in regx.findall(test_str)]
 
# printing result
print("String repetitions : " + str(res))

Producción:

La string original es: geeksgeeks son geeksgeeksgeeks para todos los geeks

Repeticiones de strings: [2, 3, 1]

Complejidad de tiempo: O(n)

Complejidad espacial: O(n)

Publicación traducida automáticamente

Artículo escrito por manjeet_04 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 *