Rekursiv Palindrom herausfinden

Yetilanguste

Mitglied
Ich soll mit der Methode boolean ispalindrom(char[] arr, int i)
herausfinden, ob die Zeichenfolge im arr-Feld ein Palindrom bildet. i ist der Grenzindex, sprich die Kontrolle geht von 0 bis i im Feld arr. Für i = 0 soll das ganze Feld überprüft werden.

Meine Idee war,

if ( arr == arr[0])
{
return true && ispalindrom(Arrays.copyOfRange(arr,1,i-1), i-1);

}
else
{
return false && ispalindrom(Arrays.copyOfRange(arr,1,i-1), i-1);
}

Das Problem ist allerdings, dass BlueJ jene Methode(Arrays.copyofRange) nicht kennt.

Meinen nächste Idee war:

if ( arr == arr[0])
{
return true && ispalindrom(arr,i-1);
}
else
{
return false && ispalindrom(arr,i-1);
}

Mein Problem ist nur, dass bei jedem Vergleich arr[0] bei 0 bleibt. Beim nächsten Aufruf soll arr[1] kontrolliert werden.
Wie mache ich das?
 
Zuletzt bearbeitet:
Wenn BlueJ die Methode nicht kennt, dann schreib sie dir doch selbst.

Das kann wirklich sein, dass BlueJ die Methode nicht kennt. Die gibt es erst seit dem 8.12.1998. 😀
Hast du Arrays importiert?
 
Wieso das Herumkopieren von Arrays, wenn du nur auf die Indices achten müsstes? Du brauchst eigentlich nur einen Start- und End-Index. Du überprüfst solange ob im Array die Elemente am start und am end Index gleich sind, bis end <= start ist. Wenn ja dann erhöhst du start und verminderst end.
 
Flown meint, dass du nicht Arrays kopieren musst sondern du einfach das Ursprugsarray verwenden kannst.
i und arr.length - i sind dann die Indices, die verglichen werden. Übergeben an die nächste Rekursion werden arr und i+1
 

Neue Themen


Zurück
Oben