Palindrom in Java?
Hi,
habe da mal versucht einen Code zu schreiben, der überprüfen soll, ob ein String ein Palindrom ist oder nicht. Mein Ansatz war es, den String zu halbieren und dann mit der ersten for-Schleife von hinten aus bis zur hälfte zur zählen. In der zweiten for-Schleife dann von vorne bis zur Hälfte.
Beim Testfall "boob" oder "anna" gibt mir die Konsole "false" aus.
Kann mir bitte jemand helfen, was ich an meinem Code verändern sollte, damit es funktioniert? Finde den Fehler leider nicht.
Vielen Dank im Voraus
smokie
2 Antworten
- wenn du es mit deiner Schleife bis zur Hälfte lösen willst, würde ich auf die innere Schleife verzichten und abhängig von i die entsprechende Position des Gegenstücks berechnen.
- alternativ kannst du auch so vorgehen: Erstelle einen String, welcher einfach nur deine Eingabe rückwärts ist - und vergleich die beiden dann
z.B. beide Ansätze:
public static boolean palindrom1(String s) {
int size = s.length();
for (int i = 0; i < size / 2; i++)
if (s.charAt(i) != s.charAt(size - 1 - i)) return false;
return true;
}
public static boolean palindrom2(String s) {
String s2 = "";
for (int i = s.length() - 1; i >= 0; i--)
s2 += s.charAt(i);
return s.equals(s2);
}
Mache nur eine Schleife, die nur bis zur Mitte (oder auch bis zum Ende) läuft, und berechnete die zugehörge Position, wo ein gleiches Zeichen stehen muss.
Dazu brauchst du die Länge des Strings.
Sei i die Position, die du prüfen willst und n die Länge des Strings. Der String heißt s.
Dann muss s[i] = s[n-i-1] sein.
Die Zugriffe auf einen String sind in Java anders, wenn du kein char[] verwendest.
Dann isst dein Ansatz schlecht. Du hast zwei Schleifen, die du nicht brauchst, weil du immer ein Zeichen mit einem anderen und nicht ein Zeichen mit einem Satz anderere Zeichen vergleichen musst.
Du bist das Problem falsch angegangen (meine Meinung).
Hätte gerne meinen Code verbessert und nicht einen komplett neuen.
Denn im Prinzip ist es die gleiche Logik nur finde ich meinen Fehler in meinem Code nicht