001    package de.hska.java.aufgaben.rekursion;
002    
003    /**
004     * Mit Palindrom kann ein char-Feld daraufhin überprüft werden,
005     * ob es ein Palindrom ist oder nicht.
006     * Ein Palindrom ist ein Wort, das Vorwärts und Rückwärts gelesen
007     * gleich ist. Zum Beispiel "abba", "lagerregal".
008     * <p>
009     *   <a href="http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/rekursion.html#palindrom">Zurück zum Aufgabentext</a>
010     * </p>
011     * 
012     * @author Christian Pape
013     *
014     */
015    public class Palindrom {
016    
017            /**
018             * Gibt genau dann <code>true</code> zurück, wenn
019             * <code>wort</code> ein Palindrom ist.
020             * Gross-/Kleinschreibung wird dabei nicht unterschieden.
021             */
022            public boolean isPalindrom(char [] wort) {
023                    return isPalindrom(wort, 0, wort.length - 1);
024            }
025    
026            /**
027             * Rekursive Implementierung für die Palindromüberprüfung.
028             */
029            private boolean isPalindrom(char[] wort, int start, int ende) {
030                    if (start >= ende) {
031                            return true;
032                    } else {
033                            return wort[start] == wort[ende]
034                                     && isPalindrom(wort, start + 1, ende - 1);
035                    }
036            }
037    }