Palindrom in Java?

2 Antworten

  1. 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.
  2. alternativ kannst du auch so vorgehen: Erstelle einen String, welcher einfach nur deine Eingabe rückwärts ist - und vergleich die beiden dann

xxxcyberxxx  22.11.2019, 13:58

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

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.


smokiedesperado 
Fragesteller
 22.11.2019, 13:51

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

0
gogogo  22.11.2019, 13:53
@smokiedesperado

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).

0