2 usuarios conectados

Encontrar primer carácter no repetido. Ejercicio en Python

Comparte esto

 

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



Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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).