Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258

    [java] stringa palindroma

    Ciao a tutti e buon San Valentino.
    Vorrei capire, come posso implementare un esempio che ho trovato su un libro, riguardo alle stringhe palindrome.

    boolean isPalindrome(int start, int end) {}

    nel libro si riferisce alla stringa che però nessuno gli ha passato..eppure questo è l'esempio classico di ricorsione, mi chiedo quindi se devo passargli la stringa nella procedura o dove devo dichiararla

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    si ho capito...l'unica spiegazione sensata è che faccia parte di un oggetto...

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Esatto. Il metodo proposto deve essere un metodo che fa parte di una classe che tu devi implementare.
    Dovresti fare in modo che questa classe metta a disposizione il metodo isPalindrome(int start, int end) che ritorna un valore booleano indicante se la stringa che l'oggetto rappresenta è palindroma o meno nell'intervallo fra start e end.
    Questo metodo deve essere utilizzato in questo modo:
    codice:
    // Crei un oggetto che rappresenta la tua stringa
    
    if ( mioOggetto.isPalindrome(0, stringa.length()) ) {
       // La stringa è palindroma
    } else {
       // La stringa non è palindroma
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    Si credo che diciamo la stessa cosa.
    Altrimenti mi hai fatto venire un'altra buona idea...è possibile fare un metodo che vada bene solo per le stringhe?

    In questo modo lo richiamerei cosi...

    "anna".èpalindroma()


    mentre nel 1 modo avrei fatto un costruttore che passa la stringa all'oggetto e secondariamente ho creato il metodo ispalindroma da richiamare(intendevi questo anche tu, no? )

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Stavo dicendo, infatti, che avevi capito perfettamente qual'era lo scopo dell'esempio di quel libro.

    Non puoi fare una cosa come quella che ti è venuta in mente (quante volte sarebbe piaciuto farla anche a me!!) perchè la classe String è definita come final e non può essere estesa.

    Niente sottoclassi, niente ereditarietà né polimorfismo per oggetti di tipo String.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Originariamente inviato da Lucked
    Si credo che diciamo la stessa cosa.
    Altrimenti mi hai fatto venire un'altra buona idea...è possibile fare un metodo che vada bene solo per le stringhe?

    In questo modo lo richiamerei cosi...

    "anna".èpalindroma()
    per questo devi estendere la classe String e definire il tuo metodo nella classe estesa,

    ciao.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    ok! Thk!
    quindi niente hai sentito anx? :bubu:

  8. #8
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Originariamente inviato da Lucked
    ok! Thk!
    quindi niente hai sentito anx? :bubu:
    Eh già, non lo sapevo

  9. #9
    1)Passi la stringa al metodo.
    2)Esegui un confronto tra la stringa passata e il suo reverse.
    3)Se sono uguali la stringa è palindroma.

    Es.
    input --> anna
    confronto --> if ("anna" == reverse("anna")) Ok la stringa è palindorma

    okkio che non so se esiste la fun reverse; guarda nella documentazione


    bye
    Hebiten

  10. #10
    occhio al confronto tra stringhe: MAI usare ==. Bisogna usare i metodo equals().

    Per l'implementazione vera e propria io farei così:
    codice:
        boolean isPalindroma(String s, int inizio, int fine) {
            try {
                String daControllare = s.substring(inizio,fine);
                StringBuffer t = new StringBuffer(daControllare);
                return t.reverse().toString().equals(daControllare);
            } catch (StringIndexOutOfBoundsException e) {
                return false;
            }
        }
    SO: Debian Sarge kernel 2.6.11
    Lang: Java, C++, C

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 © 2024 vBulletin Solutions, Inc. All rights reserved.