Solución al Ejercicio: Encontrar primer carácter no repetido
📋 Copiar código
def encontrar_primer_no_repetido(cadena):
"""
Encuentra el primer carácter no repetido en una cadena.
Args:
cadena: La cadena de entrada.
Returns:
El primer carácter no repetido en la cadena, o None si todos los
caracteres se repiten.
"""
frecuencia_caracteres = {}
# Contar la frecuencia de cada carácter en la cadena
for caracter in cadena:
frecuencia_caracteres[caracter] = frecuencia_caracteres.get(caracter, 0) + 1
# Buscar el primer carácter con frecuencia igual a 1
for caracter in cadena:
if frecuencia_caracteres[caracter] == 1:
return caracter
return None
# Ejemplos de uso
cadena1 = "aabbccdeeff"
primer_no_repetido1 = encontrar_primer_no_repetido(cadena1)
print(f"El primer carácter no repetido en '{cadena1}' es: '{primer_no_repetido1}'")
cadena2 = "abcdefgabc"
primer_no_repetido2 = encontrar_primer_no_repetido(cadena2)
print(f"El primer carácter no repetido en '{cadena2}' es: '{primer_no_repetido2}'")
cadena3 = "aabbcc"
primer_no_repetido3 = encontrar_primer_no_repetido(cadena3)
print(f"El primer carácter no repetido en '{cadena3}' es: '{primer_no_repetido3}'")
Explicación del Código:
-
Definición de la función
encontrar_primer_no_repetido(cadena)
:
- Se define una función llamada
encontrar_primer_no_repetido
que toma una cadena cadena
como argumento.
-
Inicialización del diccionario
frecuencia_caracteres
:
- Se crea un diccionario vacío llamado
frecuencia_caracteres
. Este diccionario se utilizará para
almacenar la frecuencia de cada carácter que aparece en la cadena de
entrada.
-
Conteo de la frecuencia de cada
carácter:
- Se itera a través de cada
caracter
en la cadena
de entrada.
- Para cada
caracter
, se
actualiza su conteo en el diccionario frecuencia_caracteres
.
Se utiliza el método get(caracter, 0)
para obtener la
frecuencia actual del carácter (si existe) o 0 si es la primera vez que
se encuentra. Luego, se incrementa en 1 y se asigna de nuevo al
diccionario.
-
Búsqueda del primer carácter no
repetido:
- Se vuelve a iterar a través de la
cadena
en el mismo orden en que aparecen los caracteres. Esto es
importante para encontrar el primer carácter no repetido.
- Para cada
caracter
en esta
segunda iteración, se verifica su frecuencia en el diccionario
frecuencia_caracteres
.
- Si la frecuencia de un
caracter
es igual a 1, significa que ese carácter aparece solo una vez en la
cadena. Como estamos iterando en el orden de aparición, el primer
carácter que cumpla esta condición será el primer carácter no repetido.
La función devuelve inmediatamente este caracter
.
-
Retorno de None
si no
hay caracteres no repetidos:
- 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 al menos una vez. En este caso, la función devuelve
None
.
-
Ejemplos de uso:
- Se proporcionan tres ejemplos de cadenas
diferentes para probar la función.
- Para cada ejemplo, se llama a la
función y se imprime el resultado, mostrando el primer carácter no
repetido encontrado (o
None
si no hay ninguno).