Java - Que letra aparece mas en un String

 
Vista:
sin imagen de perfil

Que letra aparece mas en un String

Publicado por Jaime Pomar (3 intervenciones) el 08/09/2014 23:35:52
Hola soy nuevo en esto , ni tan siquiera soy informático, pero para pasar el tiempo intento aprender un poco de java.Haciendo ejercicios h encontrado este sobre Strings , pero no me sale. Realmente no se qu estoy haciendo mal, pero el eclipse me dice que "out of bangs", cosa que no entiendo pues creo que con el for no me salgo. Sea como sea aqui dejo el código que he hecho. Agradecería que me explicarais que he hecho mal , gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class CaracterRep {
	public static void main(String[] args) {
		String s="hola como te vca";
		CaracterRep h= new CaracterRep();
 
		System.out.println(h.repticiones(s));
	}
 
	public int repticiones(String s){
		char c1;
		char c2;
		int cuenta=0;
		int max=0;
		char mostc='e';
		char[] striarray=s.toCharArray();
		for(int i=0; i<s.length()-1; i++){
			cuenta=0;
 
			for(int j=i+1;i<s.length();j++){
				c1=striarray[i];
				c2=striarray[j];
				if(c1==c2){
					cuenta++;
				}
				if(cuenta>max){
					max=cuenta;
					mostc=c1;
				}
			}
		}
		return cuenta;
 
	}
 
}


Me doy cuenta ahora que el programa aunque funcionara solo me diría cuantas veces sale la letra más repetida pero no me diría que letra es. De todas formas esta es la parte del mismo que me interesa resolver. Gracias por la ayuda por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Que letra aparece mas en un String

Publicado por Jaime Pomar (3 intervenciones) el 09/09/2014 17:11:27
Hola xve, gracias por el aporte, sin duda el código funciona. Sin embargo como ya he dicho estoy en fase de aprendizaje y , no he usado aun ninguna vez una hash table ni la categoria hash map. Tengo intencion de aprender como se usa , pero más adelante.Por ahora me interesaría aprender a programar programas sencillos , sin utilizar "objetos con funciones integradas" (lo llamo así porque no se como se llaman). Me interesa mas bien en este programa utilizar categoría String básicas para aprender bien como se usan. y luego avanzar con otro tipo de objetos. Dicho esto agradecería un código digamos, más sencillo o que me indicaras que estoy haciendo mal en el código de arriba. Se que estoy pidiendo mucho y de verdad te agradezco el aporte . Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Que letra aparece mas en un String

Publicado por Jaime Pomar (3 intervenciones) el 09/09/2014 23:40:52
Al final he encontrado una manera de hacerlo, aunque sigo sin saber lo que hacia mal en el programa anterior, lo dejo aquí para que sirva de utilidad a alguien que tenga el mismo problema:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class repit {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String s="hola putilla";
		repit h= new repit();
		int[] nuevo=h.moreRepeatedChar(s);
		System.out.println(nuevo[0]);
		System.out.println(nuevo[1]);
 
	}
 
	  public int[] moreRepeatedChar(String s) {
 
		    System.out.println("EN ESTE METODO USO UN ARRAY PARA EL ALGORITMO");
 
		    int []array=new int[2];
		    int []arrayCuenta=new int[s.length()];
		    char c1;
		    char c2;
		    int max=0;
		    int cuenta=1;
		    //rellono un array con la cuenta de aparcicion de todos los caracteres
		    for(int i=0;i<s.length()-1;i++){
		      cuenta=1;
		      for(int j=i+1;j<s.length();j++){
		        c1=s.charAt(i);
		        c2=s.charAt(j);
		        if(c1==c2){
		          ++cuenta;
 
		        }
		        arrayCuenta[i]=cuenta;
		      }
 
 
		    }
		    //determino en que celda(la posicion) esta el caracter mas repetido
		    for(int i=0;i<arrayCuenta.length-1;i++){
		      if(arrayCuenta[max]<arrayCuenta[i+1]){
		        max=i+1;
		      }
		    }
 
		    //relleno al array a retornar con el codigo ascii del caracter mas repetido
		    //y las veces que se repite
		    int maximo =arrayCuenta[max];
		    array[0]=(int)s.charAt(max);
		    array[1]=maximo;
 
		    return array;
		  }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar