Solución al Ejercicio: Contar ocurrencias de subcadena
📋 Copiar código
def contar_ocurrencias_subcadena(texto, subcadena):
"""
Cuenta el número de ocurrencias de una subcadena en un texto,
permitiendo superposiciones.
Args:
texto: La cadena de texto en la que se buscará.
subcadena: La subcadena que se contará.
Returns:
El número total de veces que la subcadena aparece en el texto.
"""
contador = 0
for i in range(len(texto) - len(subcadena) + 1):
if texto[i:i + len(subcadena)] == subcadena:
contador += 1
return contador
# Ejemplos de uso
texto1 = "abababa"
subcadena1 = "aba"
resultado1 = contar_ocurrencias_subcadena(texto1, subcadena1)
print(f"Ocurrencias de '{subcadena1}' en '{texto1}': {resultado1}")
texto2 = "aaaaa"
subcadena2 = "aa"
resultado2 = contar_ocurrencias_subcadena(texto2, subcadena2)
print(f"Ocurrencias de '{subcadena2}' en '{texto2}': {resultado2}")
texto3 = "hola mundo hola"
subcadena3 = "hola"
resultado3 = contar_ocurrencias_subcadena(texto3, subcadena3)
print(f"Ocurrencias de '{subcadena3}' en '{texto3}': {resultado3}")
texto4 = "xyz"
subcadena4 = "abc"
resultado4 = contar_ocurrencias_subcadena(texto4, subcadena4)
print(f"Ocurrencias de '{subcadena4}' en '{texto4}': {resultado4}")
texto5 = ""
subcadena5 = "a"
resultado5 = contar_ocurrencias_subcadena(texto5, subcadena5)
print(f"Ocurrencias de '{subcadena5}' en '{texto5}': {resultado5}")
texto6 = "aaaa"
subcadena6 = ""
resultado6 = contar_ocurrencias_subcadena(texto6, subcadena6)
print(f"Ocurrencias de '{subcadena6}' en '{texto6}': {resultado6}")
Explicación del Código:
- Función
contar_ocurrencias_subcadena(texto, subcadena)
:
- Inicializa un
contador
en
0.
- Itera a través del
texto
utilizando un bucle for
y la función range()
.
El rango de la iteración va desde el inicio del texto hasta una posición
donde aún es posible encontrar la subcadena
completa. La
fórmula len(texto) - len(subcadena) + 1
asegura esto.
- En cada iteración, se extrae una
porción del
texto
que tiene la misma longitud que la
subcadena
utilizando el slicing texto[i:i + len(subcadena)]
.
- Se compara esta porción con la
subcadena
. Si son iguales, se incrementa el contador
.
- Finalmente, se devuelve el valor del
contador
, que representa el número total de ocurrencias
encontradas.
Ejemplos de Uso:
Los ejemplos ilustran cómo la función cuenta las
ocurrencias de una subcadena específica dentro de diferentes cadenas de texto,
incluyendo casos con superposiciones (como "aba" en "abababa"), múltiples
ocurrencias, ninguna ocurrencia, un texto vacío y una subcadena vacía (en cuyo
caso, la lógica de la función devolverá len(texto) + 1
).