String umkehren
-
Hallo, kann mir jemand sagen, ob es zum Umkehren eines Strings bestimmte Algorithmen gibt oder muss man sich da selber was aus den Fingern saugen?
Zielstellung ist es das der Client einen String an den Server schickt, der diesen Rückwärts wieder zurück gibt. Und das möglichs auf mindestens zwei verschiedene Art und Weißen.
Danke für eure Hilfen
Gruß Curry
PS.: Ist eine kleine Übungsaufgabe muss also auch Termingebunden fertig werden. Freu mich also über schnellst mögliche Antworten und evtl. Homepagelinks zum Algorithmenthema bzw. auch Buchempfehlungen
-
Wie wär's mit nem reverse algo? In C++ z.B. http://www.cppreference.com/cppalgorithm/reverse.html
-
jo, so weit nicht schlecht. Nur wird sicherlich hinter dem auch nur ein simples umstapeln stecken und ich hätte gern die manuelle Alternative, weniger vorgefertigte Funktionen dafür verwendet. Weil ich mein kleines Progrämmchen ja so gestallten soll, dass man auf dem Client sich einen Alg dafür auswählen kann, dann wird der String an den Server geschickt und der gibt ihn dann je nach Alg. Auswahl umgekehrt zurück.
-
hier ist ein ausführlicher Algorithmus für String umkehren
#include <stdio.h>
int main(void)
{
char str[100];
int i, len;printf("Zeichenreihe eingeben:");
gets(str);printf("\nGespiegelt:");
i=0;
while (str[i] != '\0')
i++;
len=i;for (i=len-1; i>-1; i--)
{
printf("%c", str[i]);
}
return 0;
}
-
hätt ich spontan auch so gemacht
wers richtig umständlicher mag:#include "stdio.h" int main(void) { char str[100]; printf("%s \n","Zeichenfolge eingeben (max 100)"); gets(str); int length = 0; int i = 0; while (str[i] != NULL && i<100) { i++; length = i; } if (length%2 == 0) { length = length/2; char buf[1]; for (int i = 0; i<length;i++) { buf[0] = str[i]; str[i] = str[length*2-i-1]; str[length*2-i-1] = buf[0]; } } else { length = (length-1)/2; char buf[1]; for (int i = 0; i<length;i++) { buf[0] = str[i]; int wert = length*2-i; str[i] = str[wert]; str[length*2-i] = buf[0]; } } printf("%s \n",str); gets(str); return 0; }
-
Die C++-Variante
std::string reverse( std::string const& s ) { return s.empty() ? "" : s[s.length()-1] + reverse(s.substr(0, s.length()-1)); }