Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/06/2007, 14:16
picaporte
 
Fecha de Ingreso: noviembre-2003
Mensajes: 59
Antigüedad: 21 años, 1 mes
Puntos: 0
Re: numero de repeticiones de un caracter en una cadena

Creo que esta no es la forma mas optima pero me funciono:

Código:
/*
 * BusquedaCadena.java
 * 
 * Created on 07-06-2007, 02:40:06 PM
 * 
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package practicando1;

/**
 *
 * @author Picaporte
 */
public class BusquedaCadena {

    public BusquedaCadena() {
    }
  public static void main(String args[]){
        
        String cadena="esta es una prueba loca";
        char charCadena='\n';
        int[] resul = new int[300];
        int numeroVeces=0, letraRepetida=0;
      
        //suma un punto cada vez que se repite.
        for(int i=0;i<cadena.length();i++)           
           resul[cadena.codePointAt(i)]++;
        
       //busca el que tiene mas punto
        for(int i=48;i<resul.length;i++){
            if(resul[i]>=numeroVeces){                
                numeroVeces=resul[i];
                letraRepetida=i;
             }}
       
       //busca en la cadena original. 
        for(int i=0;i<cadena.length();i++){
            if (letraRepetida==cadena.codePointAt(i)){
                charCadena=cadena.charAt(i);                
            }
           
       }
   System.out.println("\nEl caracter mas repitdo es = "+charCadena);
   System.out.println("y se repite "+numeroVeces+" veces");
            
  }    
        
      
       
 }
Tienes que considerar que para este programa no es lo mismo
Mayuscula y minuscula, de letras con acento o sin acento.


datos://
caracter = codePointAt
0..9 = 48..57
A..B = 64..90
a..z = 97..122

ñ = 241
Ñ = 209
á = 225
é = 233
í = 237
ó = 243
ú = 250

por eso hice una matriz de tamaño 300 y en el for empeze a buscar a partir
del i=48;
Yo creo que hay una forma mas facil de hacer lo mismo?, a lo mejor usando serachBinary o nose.
saludos