#

Radar und Anna

Während ich in ein paar Onlineforen rumblätterte, fiel mir das Problem eines Java-Newbies auf. Er wollte Wörter darauf testen, ob es sich um Palindrome handelt, also ob sie vorwärts wie rückwärts gelesen das gleiche bedeuten. Auf die schnelle habe ich eine Methode geschrieben, welche Wörter oder Sätze auf die Palindromeigenschaft prüft.

public static boolean isPalindrome(String sentence) {
  // remove all whitespace characters and casing
  String sentenceWithoutSpaces = sentence.replaceAll("\\s+", "")
    .toLowerCase();
  // find the middle
  int middle = (int) (sentenceWithoutSpaces.length() / 2);
  boolean isPalindrome = true;
  for (int i = 0; i < middle; i++) {
    if (sentenceWithoutSpaces.charAt(i) != sentenceWithoutSpaces
      .charAt(sentenceWithoutSpaces.length() - (i + 1))) {
      isPalindrome = false;
      break;
    }
  }
  return isPalindrome;
}
Tags:,

7 Responses to “Radar und Anna” »»

  1. Comment by andrej | 0:08 15.02.06|X

    damit der wettbewerb interessant bleibt, wollte ich dich auf einen fehler in deiner realisierung hinweisen. teste mal deine methode mit „ot s to“. 😉

    und natürlich darf auch meine implementierung nicht fehlen. 😉

    public static final boolean isPalyndromic(final String polyndrom) {
    int fwd = 0;
    int bwd = polyndrom.length() - 1;

    boolean bwdTrim = false, fwdTrim = false;

    while (fwd

    interessant waere es, die schnellste implementierung zu finden. aber ich bin muede fuer weitere experimente. vielleicht koennen wir allerdings das thema ein paar tage am laufen halten.

  2. Comment by andrej | 0:09 15.02.06|X

    da hat sich beim absenden mit dem fehlerhaften beispiel was getan. die whitespaces wurden wegrationalisiert. hier noch ein versuch: "ot s to"

  3. Comment by andrej | 10:02 15.02.06|X

    mist! der code hat sich nicht wegen des &lt:-zeichens richtig publizieren lassen.
    tja, so wird aus einem comment, drei 😉


    public static final boolean isPalyndromic(final String polyndrom) {
    int fwd = 0;
    int bwd = polyndrom.length() - 1;

    boolean bwdTrim = false, fwdTrim = false;

    while (fwd < bwd) {
    char chFwd = polyndrom.charAt(fwd);
    char chBwd = polyndrom.charAt(bwd);

    if (chBwd != chFwd) {
    char chLowerBwd = Character.toLowerCase(chBwd);
    char chLowerFwd = Character.toLowerCase(chFwd);

    if (chLowerBwd != chLowerFwd) {
    if (!bwdTrim) {
    if (Character.isWhitespace(chBwd)) {
    bwd--;
    continue;
    } else {
    bwdTrim = true;
    }
    }

    if (!fwdTrim) {
    if (Character.isWhitespace(chFwd)) {
    fwd++;
    continue;
    } else {
    fwdTrim = true;
    }
    }
    return false;
    }
    } else {
    if (!bwdTrim && !Character.isWhitespace(chBwd)) {
    bwdTrim = true;
    }

    if (!fwdTrim && !Character.isWhitespace(chFwd)) {
    fwdTrim = true;
    }
    }

    fwd++;
    bwd--;
    }

    return true;
    }

  4. Comment by andrej | 10:18 15.02.06|X

    ehm, der von mir bemerkte „fehler“ in deiner ausführung, ist anscheinend keiner.
    ich habe mal auf wikipedia (http://de.wikipedia.org/wiki/Palindrom) nachgeschlagen, was ein satzpalindrom ist. da werden nicht nur die whitespases, sondern auch sonderzeichen (satzzeichen).

    ausserdem gibt es wohl auch palindrome, die rückwärts gelesen anders klingen, aber dennnoch einen sinn ergeben. so ist das paar Nebel – Leben ebenfalls ein palindrompaar. da sowohl nebel als auch leben einen sinn ergeben. diese definition macht die sache natürlich etwas schwierig. 😉

  5. Comment by Secco | 15:04 15.02.06|X

    :) Sieht gut aus. Ich denke wirklich interessant wäre ein Programm, dass von sich aus (sinnvolle) Palindrom-Sätze aus einfachen Wörtern bilden kann.
    Wäre das nicht mal was?

  6. Comment by TestMaster | 0:55 16.02.06|X

    Hallo,

    secco :-)))
    Du denkst immer zuerst an NN oder?!?:-))
    Ein Programm was „von sich aus“ hier und „von sich aus“ da was macht.
    Du weiÃt wie das Enden wird oder??. Hat dir Hollywood da nicht genug
    Stoff geliefert.:-))(Terminator 1-3)

    GruÃ
    TestMaster

  7. Comment by Secco | 13:43 16.02.06|X

    Palindrome führen nicht zwangsläufig zum Weltuntergang! Letztendlich sind es die Menschen, die den eigentlichen Sc*** verzapfen. Aber es muss ja auch nicht mit NN implementiert werden. Es gibt sicherlich auch einfachere Möglichkeiten Palindromsätze zu bilden. Die Frage ist welche…

Leave a Reply »»

Note: All comments are manually approved to avoid spam. So if your comment doesn't appear immediately, that's ok. Have patience, it can take some days until I have the time to approve my comments.