Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/12/2013, 23:43
Avatar de cyrux_cob
cyrux_cob
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Métodos que imprima la palabra mas repetida en un String

Saludos.
Buscando una solución, encontré un código que decía las veces que se repetían las palabras en una frase. Yo lo modifiqué para que devolviera la palabra que más se repetía y en caso que hubiesen más de una con la misma cantidad de repeticiones la diera todas como resultado. Ten en cuenta que en el método split utilicé el espacio como delimitador de las palabras, por lo que si vas a introducir un parrafo con puntos y comas, deberás utilizar una expresión regular según te convenga. Aquí va

Código Java:
Ver original
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6.  
  7. package palabramasrepetida;
  8.  
  9. /**
  10.  *
  11.  * @author cob
  12.  */
  13. public class PalabraMasRepetida {
  14.  
  15.     /**
  16.      * @param args the command line arguments
  17.      */
  18.     public static void main(String[] args) {
  19.         // TODO code application logic here
  20.         PalabraMasRepetida palabra = new PalabraMasRepetida();
  21.         String frase = "baño gato baño gato data baño perro fhgj tsyu gato peRRo";        
  22.         System.out.print("La(s) palabra(s) que más se repite(n) es(son): " + palabra.obtenerLaMasRepetida(frase));
  23.     }
  24.    
  25.     public String obtenerLaMasRepetida(String _frase)
  26.     {
  27.         String palabras [] = _frase.split(" ");
  28.         String palabrasB [] = _frase.split(" ");
  29.        
  30.         int cantidad = palabras.length;
  31.         String resultado = "";
  32.         int contadorMasRepet =  0;
  33.  
  34.         for (int i = 0; i < cantidad; i++) {
  35.                 int contador = 0;
  36. //          resultado += palabras[i];
  37.                 String palabra = palabras[i];
  38.  
  39.                 for (int j = 0; j < cantidad; j++) {
  40.  
  41.                         if (palabra.equalsIgnoreCase(palabrasB[j])){
  42.                                 contador++;
  43.                                 palabras[j] = "";
  44.  
  45.                         }
  46.                 }
  47.  
  48.                 if ((contador > 1)&& (contador > contadorMasRepet)){
  49.                         resultado = palabra;
  50.                         contadorMasRepet = contador;
  51.                         System.out.print(palabras[i]);
  52.                 }
  53.                 else if ((contador > 1)&& (contador == contadorMasRepet)){
  54.                     resultado += " " + palabra;
  55.                 }      
  56.         }
  57.         if (resultado == "")
  58.             resultado = "No hay palabra repetida";
  59.        
  60.         return resultado;
  61.     }
  62. }