1 usuario conectado

Primer carácter no repetido en una cadena. Ejercicio en Python

Comparte esto

 

Escribe una función en Python llamada 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 en la cadena se repiten, la función debería devolver None. La búsqueda debe ser sensible a mayúsculas y minúsculas (es decir, 'a' y 'A' se consideran caracteres diferentes).

Por ejemplo:

Piensa en cómo puedes contar la frecuencia de cada carácter en la cadena y luego encontrar el primer carácter con una frecuencia de 1.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Primer carácter no repetido en una cadena

📋 Copiar código


from collections import Counter

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

  Args:
    cadena: La cadena de texto a analizar.

  Returns:
    El primer carácter no repetido, o None si todos los caracteres se repiten.
  """
  frecuencia_caracteres = Counter(cadena)

  for caracter in cadena:
    if frecuencia_caracteres[caracter] == 1:
      return caracter

  return None

# Ejemplo de uso:
texto1 = "aabbcde"
resultado1 = primer_no_repetido(texto1)
print(f"El primer no repetido en '{texto1}' es: {resultado1}")

texto2 = "aabcbcd"
resultado2 = primer_no_repetido(texto2)
print(f"El primer no repetido en '{texto2}' es: {resultado2}")

texto3 = "aabbcc"
resultado3 = primer_no_repetido(texto3)
print(f"El primer no repetido en '{texto3}' es: {resultado3}")

texto4 = "The quick brown fox jumps then quickly jumps again"
resultado4 = primer_no_repetido(texto4)
print(f"El primer no repetido en '{texto4}' es: {resultado4}")
 

Explicación de la solución:

  1. from collections import Counter: Importa la clase Counter del módulo collections, que es muy útil para contar la frecuencia de los elementos en una secuencia.
  2. def primer_no_repetido(cadena):: Define la función que toma la cadena como entrada.
  3. frecuencia_caracteres = Counter(cadena): Crea un diccionario (Counter) donde las claves son los caracteres de la cadena y los valores son su frecuencia de aparición.
  4. for caracter in cadena:: Itera a través de la cadena en el orden en que aparecen los caracteres. Esto es importante para encontrar el primer no repetido.
  5. if frecuencia_caracteres[caracter] == 1:: Para cada carácter, verifica si su frecuencia en el diccionario frecuencia_caracteres es igual a 1.
  6. return caracter: Si se encuentra un carácter con frecuencia 1, la función lo devuelve inmediatamente, ya que es el primer no repetido que se encuentra en el orden de la cadena.
  7. return None: Si el bucle termina sin encontrar ningún carácter con una frecuencia de 1, significa que todos los caracteres en la cadena se repiten, por lo que la función devuelve None.

¡Intenta implementar esta función y probarla con los ejemplos proporcionados en el "Ejecutor de Python Interactivo"! ¿Qué resultados obtienes? Recuerda que es sensible a mayúsculas y minúsculas.