Recorrer un String carácter a carácter y contar cuantas veces se repiten.

Programa para recorrer un String carácter a carácter en este caso hemos cogido el primer párrafo del quijote para ver cuantos caracteres se repiten de cada uno, para ello utilizamos el código decimal de ascii desde 0 a 255 utilizando un Array de enteros, cada posición será un carácter. En el primer for rellenamos con un +1 cada vez que salga un carácter en su posición del codigo ascii, el segundo for imprimimos el resultado por pantalla saltándonos los caracteres que tengan 0 apariciones.

public class Array_Ej1 {

 public static void main(String[] args) {
  
  int ascii255[] = new int [255];
  
  //String pequeñito de prueba =)
  String parrafo= "«En un lugar de la Mancha,"
    + " de cuyo nombre no quiero acordarme, "
    + "no ha mucho tiempo que vivía un hidalgo "
    + "de los de lanza en astillero, adarga antigua,"
    + " rocín flaco y galgo corredor. Una olla de algo "
    + "más vaca que carnero, salpicón las más noches, "
    + "duelos y quebrantos los sábados, lentejas los viernes, "
    + "algún palomino de añadidura los domingos, consumían las"
    + " tres partes de su hacienda. El resto della "
    + "concluían sayo de velarte, calzas de velludo"
    + " para las fiestas con sus pantuflos de lo mismo,"
    + " los días de entre semana se honraba con su vellori"
    + " de lo más fino. Tenía en su casa una ama que pasaba"
    + " de los cuarenta, y una sobrina que no llegaba a los "
    + "veinte, y un mozo de campo y plaza, que así ensillaba "
    + "el rocín como tomaba la podadera. Frisaba la edad de nuestro"
    + " hidalgo con los cincuenta años, era de complexión recia, "
    + "seco de carnes, enjuto de rostro; gran madrugador y amigo de "
    + "la caza. Quieren decir que tenía el sobrenombre de Quijada o "
    + "Quesada (que en esto hay alguna diferencia en los autores que "
    + "deste caso escriben), aunque por conjeturas verosímiles se deja "
    + "entender que se llama Quijana; pero esto importa poco a nuestro "
    + "cuento; basta que en la narración dél no se salga un "
    + "punto de la verdad».";
  
  


              for(int i=0; i< parrafo.length();i++){
   
   char car = parrafo.charAt(i);
   int aux = (int)car;
   
   if(ascii255[aux]==0)
   {
    ascii255[aux]=1;
   }
   else
   {
    ascii255[aux]=ascii255[aux]+1;
   }
  }
 
  for(int i=32; i < ascii255.length; i++)
  {
   if(ascii255[i]!=0)
   {
    System.out.println("El caracter "+(char)i+" se repite "+ascii255[i]+" veces.");
   }
   
  }
 

 }

}

No hay comentarios:

Publicar un comentario