lunes, diciembre 20, 2010

Cálculo de Frecuencias - Problema UVA 499

Este problema busca calcular el o los caracteres que más se repiten en una cadena. El enunciado está expuesto en la página http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=6&page=show_problem&problem=440

import java.io.*;

class Main {
    static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String args[]) throws Exception {
        Main myWork = new Main();   // create a dinamic instance
        myWork.Begin();             // the true entry point
        System.exit(0);
    }

    void Begin() throws Exception {
        while(true) {
            String linea = in.readLine();
            if(linea==null) break;
            System.out.println(procesarCadena(linea));
        }
    }

    public String procesarCadena(String cadena) {
        cadena=cadena.replaceAll("[^\\p{Alpha}]", "");
        char[] arreglo = cadena.toCharArray();
        byte[] contador = new byte[256];
        for(char c: arreglo) contador[c]++;
        int max=0;
        for(int i=0; i<contador.length; i++) if(contador[i]>max) max=contador[i];
        String respuesta="";
        for(int i=0; i<contador.length; i++) if(contador[i]==max) respuesta+=(char) i;
        return respuesta+" "+max;
    }
}

1 comentario:

Multiprocesamiento recursivo en JAVA 7

Una de las estrategias de diseño de algoritmos más comunes es la de "divide y vencerás", en la cual, un problema de tamaño relativ...