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:
-
Importa Counter
:
De la biblioteca collections
, Counter
es una clase
útil para contar la frecuencia de los elementos en una secuencia.
-
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.