Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Java] suggerimenti su codice

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: archimede, Triumph Of Steel

[Java] suggerimenti su codice

Postdi karug64 » 03/12/17 01:36

Salve a tutti.

Pochi giorni fa, sul forum dedicato agli applicativi Office, mi è stato suggerito da Anthony un codice che permetteva di ricavare tutte le parole possibili, dato un numero di lettere, e di confrontarle con un dizionario caricato su un foglio excel

http://www.pc-facile.com/forum/viewtopic.php?f=26&t=109085&p=640255#p640269

Ora sto cercando di tradurlo in java, volendo imparare questo linguaggio di cui neofita.

Ho scritto questo codice:

Codice: Seleziona tutto
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.*;

public class Legge {

   public static void main(String [] args) throws FileNotFoundException, IOException {
      // TODO Auto-generated method stub
      int Quante = -1;
      int wLen = 0;
      boolean isAnagramma;
      String strCerca = new String("OCSA");
      String cW = new String("");
      // Array
      String[] dizionario = new String[1000000];
      
      BufferedReader reader = new BufferedReader(new FileReader("dizionario.txt"));
        String Parola = reader.readLine();
       
        while(Parola!=null) {
            Parola = reader.readLine();
            if (Parola!=null) {
            dizionario[++Quante] = Parola.toUpperCase();
            }
        }
        reader.close();
       
        wLen=strCerca.length();
        for (int k = 0; k <= Quante; k++)
        {
           if (dizionario[k].length()==wLen)
           {
              cW = dizionario[k];
              isAnagramma = true;
              if (strCerca.length() == cW.length())
              {
                     //verifica anagramma
                    for (int i = 0; i < strCerca.length(); i++)
                    {
                       char c = strCerca.charAt(i);
                       int indice = cW.indexOf(c);
                          if(indice >= 0)
                          {
                             cW = cW.substring(0,indice) + cW.substring(indice+1);
                          }
                          else
                          {
                             isAnagramma = false;
                             break;
                          }
                    }
                 }
              if (isAnagramma)
              {
                 System.out.println("Trovato " + dizionario[k]);
              }
           }      
        }      
        System.out.println("Finito");
   }
}


che carica il dizionario in memoria e poi ricerca tutte le parole che si possono comporre con delle lettere date (per esempio OCSA)

Ora dovrei implementare una funzione che, data una stringa di caratteri ("ABCOA") ed un numero compreso tra 2 e la lunghezza massima della stringa (in questo caso 5), mi estragga tutte le combinazioni possibili (anche senza senso) componibili con le "x" lettere della stringa.
Per esempio con 3 dovrei ottenere:
abc, abo, aba, acb, aco, aca, aoa, bco,bca,bac,bao,baa,boa,coa,cab,cba,cbo,cba (e non so se ce ne sono altre...)

Queste combinazioni le passerei alla routine già fatta per confrontarne la presenza nel dizionario.

Sapreste darmi qualche suggerimento ?
Grazie
Office 2010
karug64
Utente Senior
 
Post: 648
Iscritto il: 20/11/11 21:22

Sponsor
 

Torna a Programmazione


Topic correlati a "[Java] suggerimenti su codice":


Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti