Java / Palindrom rekursiv erkennen: Kann mir jemand sagen, wo in meinem Code der Fehler liegt?

2 Antworten

Du vergleichst in jedem Durchlauf mit dem ersten Buchstaben des Wortes.

Du solltest einfach rekursiv die Methode mit dem Parameter s.substring(1, s. length-1) aufrufen. Dann müsstest du der Methode auch nicht mehr die Länge des Strings als Parameter übergeben.


xxxcyberxxx  11.03.2020, 21:46

Ein Substring ist suboptimal, da du ja jedes mal einen neuen String erstellst. Klar, bei kurzen Worten ist das kein Problem, aber man kann ja dennoch auf Effizienz schauen

0
Laufstall  11.03.2020, 21:49
@xxxcyberxxx

Hast natürlich recht, aber ich wollt halt eine Lösung , die die Methode des Fragestellers möglichst wenig verändert und trotzdem funktioniert.

0

Bei einem Palindrom vergleichst du ja immer paarweise aufeinanderfolgende Gruppen, also beim Wort der Länge 6 vergleichst du Buchstabe 1 mit 6, Buchstabe 2 mit 5, Buchstabe 3 mit 4 ...

Und jetzt schau dir mal deine Funktion an

if (s.charAt(0) != s.charAt((s.length() - 1))) {

xxxcyberxxx  11.03.2020, 21:46

Kleiner Tipp:

  1. übergib deiner Methode ZWEI Indizes. Einer zählt von 0 nach oben, einer von s.length() - 1 nach unten. Sobald der erste größer oder gleich der zweite ist, kannst du wahr zurückgeben
  2. erstell eine überladene Methode, die NUR das Wort nimmt, und rufe in dieser deine Palindrom-Methode mit allen nötigen Parametern initial auf
1