PDA

Visualizza la versione completa : [java] stringa palindroma


Lucked
14-02-2004, 01:29
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

Lucked
14-02-2004, 02:50
si ho capito...l'unica spiegazione sensata è che faccia parte di un oggetto...

LeleFT
14-02-2004, 15:04
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:


// Crei un oggetto che rappresenta la tua stringa

if ( mioOggetto.isPalindrome(0, stringa.length()) ) {
// La stringa è palindroma
} else {
// La stringa non è palindroma
}


Ciao. :ciauz:

Lucked
14-02-2004, 15:13
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? )

LeleFT
14-02-2004, 15:33
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. :ciauz:

anx721
14-02-2004, 15:34
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.

Lucked
14-02-2004, 15:40
ok! Thk!
quindi niente hai sentito anx? :bubu:

anx721
14-02-2004, 16:04
Originariamente inviato da Lucked
ok! Thk!
quindi niente hai sentito anx? :bubu:

Eh già, non lo sapevo :stordita:

hebiten
17-02-2004, 14:08
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

Lucis
17-02-2004, 15:36
occhio al confronto tra stringhe: MAI usare ==. Bisogna usare i metodo equals().

Per l'implementazione vera e propria io farei così:

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;
}
}

Loading