6 usuarios conectados

Encontrar primer no repetido. Ejercicio en Python

Comparte esto

 

Escribe una función en Python llamada encontrar_primer_no_repetido que tome una cadena de texto como entrada y devuelva el primer carácter en la cadena que no se repite. Si todos los caracteres se repiten o la cadena está vacía, la función debería devolver None.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Encontrar primer no repetido

📋 Copiar código


from collections import Counter

def encontrar_primer_no_repetido(texto):
  """
  Encuentra el primer carácter no repetido en una cadena de texto.

  Args:
    texto: La cadena de texto de entrada.

  Returns:
    El primer carácter no repetido, o None si todos se repiten o la cadena está vacía.
  """
  if not texto:
    return None

  contador = Counter(texto)
  for caracter in texto:
    if contador[caracter] == 1:
      return caracter

  return None

# Ejemplos de uso
texto1 = "abacabad"
resultado1 = encontrar_primer_no_repetido(texto1)
print(f"Primer no repetido en '{texto1}': {resultado1}")

texto2 = "aabbccddeeff"
resultado2 = encontrar_primer_no_repetido(texto2)
print(f"Primer no repetido en '{texto2}': {resultado2}")

texto3 = "a"
resultado3 = encontrar_primer_no_repetido(texto3)
print(f"Primer no repetido en '{texto3}': {resultado3}")

texto4 = ""
resultado4 = encontrar_primer_no_repetido(texto4)
print(f"Primer no repetido en '': {resultado4}")

texto5 = "aab"
resultado5 = encontrar_primer_no_repetido(texto5)
print(f"Primer no repetido en '{texto5}': {resultado5}")

texto6 = "aabbc"
resultado6 = encontrar_primer_no_repetido(texto6)
print(f"Primer no repetido en '{texto6}': {resultado6}")

 

Explicación del Código:

  1. Importa Counter: De la biblioteca collections, Counter es una clase útil para contar la frecuencia de los elementos en una secuencia.

  2. Función encontrar_primer_no_repetido(texto):

    • Manejo de cadena vacía: if not texto:: Si la cadena de entrada está vacía, devuelve None.
    • Conteo de frecuencia: contador = Counter(texto): Crea un Counter que almacena la frecuencia de cada carácter en la cadena.
    • Iteración y verificación: for caracter in texto:: Itera a través de los caracteres de la cadena en el orden en que aparecen.
    • if contador[caracter] == 1:: Para cada carácter, verifica si su frecuencia en el contador es igual a 1. Si lo es, significa que este es el primer carácter no repetido encontrado (debido al orden de la iteración), y la función lo devuelve.
    • Retorno si no se encuentra: return None: Si el bucle termina sin encontrar ningún carácter con frecuencia 1, significa que todos los caracteres se repiten o la cadena estaba vacía (ya manejado al principio), por lo que la función devuelve None.

Ejemplos de Uso:

Los ejemplos muestran cómo la función encuentra el primer carácter que aparece solo una vez en diferentes cadenas de texto. También se incluyen casos con cadenas vacías y cadenas donde todos los caracteres se repiten.