package examenes.examen20250221.ejercicio02;

import examenes.examen20250221.ejercicio01.Producto;
import examenes.examen20250221.utils.Utils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        String linea = Utils.solicitarStringScannerInline("Introduzca la línea a analizar: ").toLowerCase();

        HashMap<Character, Letra> letras = new HashMap<>();
        int numDigitos = 0;
        int numEspacios = 0;
        int numOtros = 0;
        int numLetras = 0;

        for (Character c : linea.toCharArray()) {
            if (Character.isLetter(c)) {
                Letra conteoLetra = letras.get(c);
                if (conteoLetra == null) {
                    letras.put(c, new Letra(c, 1));
                } else {
                    letras.get(c).sumaConteo();
                }
                numLetras++;
            } else if (Character.isDigit(c)) {
                numDigitos++;
            } else if (Character.isSpaceChar(c)) {
                numEspacios++;
            } else {
                numOtros++;
            }
        }

        List<Letra> listaLetras = new ArrayList<>();
        for (Object producto : letras.values().toArray()) {
            listaLetras.add((Letra) producto);
        }

        listaLetras = Utils.ordenarBurbujaLetras(listaLetras);


        System.out.println("La línea de texto tiene " + numLetras + " letras.");
        System.out.println("La línea de texto tiene " + numDigitos + " digitos.");
        System.out.println("La línea de texto tiene " + numEspacios + " espacios.");
        System.out.println("La línea de texto tiene " + numOtros + " otros caracteres.");

        for (int i = 0; i < 3; i++) {
            System.out.println("La " + (i + 1) + "ª letra más frecuente es la: " + listaLetras.get(i).getLetra());
        }
    }
}
