Wie kann man in C ohne die string.h-Bibliothek prüfen, ob die Eingabe einem Palindrom entspricht?

2 Antworten

Man kann sich das Leben natürlich unnötig schwer machen ;-).

char *s="Otto";
char *e;
for(e=s;*e!=NULL;++e) if (isupper(*e)) *e=tolower(*e);

So konvertierst Du alles zu Kleinbuchstaben und Dein zweiter Pointer steht am Ende des Strings (naja, fast).

Um festzustellen, ob ein Palindrom vorliegt, kannst Du dann einfach *s mit *e vergleichen und bei Übereinstimmung s und e um jweils 1 Schritt aufeinander zubewegen. Dann überlegst Du Dir noch die passende Abbruchbedingung und solltest fertig sein.

------

Für tolower und isupper benötigst Du lediglich ctype.h.

Wandle alle Buchstaben in Groß- oder Kleinbuchstaben um. Dann schaust du, ob du ausgehend von außen immer Wortpaare findest.

Beispiel:

neben
n - n
e - e

Sofern das Wort eine ungerade Anzahl an Buchstaben hat, kannst du den Buchstaben in der Mitte ignorieren.