🔡 Primer carácter no repetido

Ejercicio clásico de entrevistas

💭 El problema

Una pregunta muy popular en entrevistas es encontrar el primer carácter no repetido de una cadena.

Por ejemplo, con la cadena:


"una manzana verde"

El primer carácter que no se repite es u.
Este ejercicio es excelente para practicar estructuras de datos y pensamiento lógico.

🌱 Idea general

Para resolver el problema:

  1. Recorremos la cadena y contamos cuántas veces aparece cada carácter.
  2. Guardamos cada carácter y su frecuencia en una tabla hash (HashMap).
  3. Luego volvemos a recorrer la cadena:
    • El primer carácter cuya frecuencia sea 1, es la respuesta.

🧠 Lógica principal del método

import java.util.HashMap;
import java.util.Map;

public class BuscadorCaracter {

    public static char primerNoRepetido(String texto) {
        Map<Character, Integer> frecuencias = new HashMap<>();

        // Primer paso: contar repeticiones
        for (char c : texto.toCharArray()) {
            int conteo = frecuencias.containsKey(c) ? frecuencias.get(c) : 0;
            frecuencias.put(c, conteo + 1);
        }

        // Segundo paso: buscar el primero con frecuencia 1
        for (char c : texto.toCharArray()) {
            if (frecuencias.get(c) == 1)
                return c;
        }

        // Si todos se repiten, devolvemos un carácter especial
        return Character.MIN_VALUE;
    }
}

🔍 Explicación del algoritmo

  • Map<Character, Integer> → tabla hash donde guardamos cuántas veces aparece cada carácter.
  • containsKey(c) → revisa si el carácter ya fue visto.
  • put(c, conteo + 1) → incrementa su frecuencia.
  • Luego, recorremos nuevamente para encontrar el primero con frecuencia 1.

🧩 Ejemplo de ejecución

public class Principal {
    public static void main(String[] args) {
        BuscadorCaracter buscador = new BuscadorCaracter();
        char resultado = buscador.primerNoRepetido("una manzana verde");
        System.out.println("👉 El primer carácter no repetido es: " + resultado);
    }
}

🧾 Salida esperada:

👉 El primer carácter no repetido es: u

🧱 Concepto clave

El HashMap permite buscar y actualizar valores en tiempo O(1). Por eso, este algoritmo tiene una complejidad total O(n) y resulta muy eficiente incluso para cadenas largas.

🌟 Conclusión

  • Usa una tabla hash para contar frecuencias rápidamente.
  • Itera dos veces: una para contar, otra para identificar.
  • Si no hay caracteres únicos, devuelve Character.MIN_VALUE.

🧠 Este patrón —contar y luego identificar— aparece en muchos problemas de entrevistas.

🪄 Próximo paso

Experimenta con otras cadenas:

buscador.primerNoRepetido("universidad");
buscador.primerNoRepetido("programación");
buscador.primerNoRepetido("estadística");

💡 ¿Qué carácter devolverá cada una?