1 usuario conectado

Contar ocurrencias de subcadena. Ejercicio en Python

Comparte esto

 

Escribe una función en Python llamada contar_ocurrencias_subcadena que tome una cadena de texto y una subcadena como entrada. La función debe devolver el número total de veces que la subcadena aparece en el texto, permitiendo superposiciones.



Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  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:

  1. 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).