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