Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Algoritmo per il confronto di strighe

    salve,
    ecco il mio problema:
    ho due stringhe (che rappresentano due indirizzi). esiste un algoritmo collaudato per il confronto delle due, cioè se la prima stringa è contenuta nella seconda ??
    faccio un esempio:

    a: Via Roma Milano 20000
    b: Via Roma Milano 20000 IT

    come si può notare la stringa a è contenuta in b ma se

    a: Via Rom Milano 20000
    b: Via Roma Milano 20000 IT

    la stringa a NON è contenuta in b.

    In pratica vorrei realizzare un sistema che controlla che ogni parola di a è contenuta in b. Importante è che non deve tenere conto della posizione.
    Vi faccio vedere quello che ho realizzato io:


    Codice PHP:
            String[] awords a.split(" ");
            
    String[] bwords b.split(" ");
            
    // perform the comparison
            
    for (int i=2i<awords.lengthi++) {
                
    awords[i] = d.getCityIT(awords[i]);
            }
            
    Boolean reply false;
            for (
    int i=0i<awords.length && !replyi++) {
                
    reply true;
                for (
    int j=0j<bwords.length && replyj++) {
                    if (!
    awords[i].equals(bwords[j])){
                        
    reply true;
                    }else
                        
    reply false;
                }
            }
            return (
    reply);
          } 
    Grazie a tutti.
    ciao

    mauro

  2. #2
    nessuno mi sa aiutare per ottimizzare l'algoritmo ?

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Algoritmo per il confronto di strighe

    Originariamente inviato da -plume83-
    In pratica vorrei realizzare un sistema che controlla che ogni parola di a è contenuta in b. Importante è che non deve tenere conto della posizione.
    A me personalmente non è molto chiaro .... nel senso che dovresti precisare meglio.

    Io ti dico cosa ho capito io: innanzitutto vuoi operare sulle singole parole, non trattare le due stringhe nella loro interezza. E fin qui ok, spezzi le due stringhe e ottieni i vari "token".

    Per ogni parola X della stringa A vuoi cercare se esiste una parola Y in B (in qualunque posizione) tale per cui X è una sottostringa di Y.
    Se tutte le parole di A le trovi in B come detto sopra, allora il risultato finale è un "true", altrimenti "false".

    Quindi per fare un esempio, se in B hai la parola "Roma" in A può corrispondere una parola "Rom", "oma", "om".
    È così??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    no no..
    in pratica ogni parola di A deve essere STRETTAMENTE contenuta in B.
    Quindi nel caso in cui A contiene Rom e B Roma deve dare errore..

    In pratica devo fare un controllo di ogni singola parola (che deve essere contenuta), in qualunque posizione.

    Per Esempio:
    A: Via Rom Milano 20025
    B: Via Roma Milano 20024

    Il sistema deve segnalare che le strighe sono diverse, sia per Rom - Roma che per 20025 - 20024.

    Spero di essere stato più chiaro.

    ciao
    mauro.

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da -plume83-
    in pratica ogni parola di A deve essere STRETTAMENTE contenuta in B.
    Ok, allora se adesso ho capito bene, guarda quanto è semplice (nonché pulito):

    codice:
    public static boolean paroleAInB(String a, String b) {
        String[] paroleA = a.split(" ");
        String[] paroleB = b.split(" ");
    
        mainLoop:
        for (int ia = 0; ia < paroleA.length; ia++) {
            for (int ib = 0; ib < paroleB.length; ib++) {
                if (paroleA[ia].equals(paroleB[ib])) {
                    continue mainLoop;
                }
            }
    
            return false;
        }
    
        return true;
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.