这个其实不是原创的了,只是自己写了一遍而已。第一种是普通逆序,第二种是原地逆序。
char* Reverse(char* s)
{
//将q指向字符串最后一个字符
char* q = s ;
while( *q++ ) ;
q -= 2 ;
//分配空间,存储逆序后的字符串。
char* p = malloc(sizeof(char) * (q - s + 2));
char* r = p ;
// 逆序存储
while(q >= s)
*p++ = *q-- ;
*p = '\0' ;
return r ;
}
char* InPlaceReverse(char* s){
char *left = s;
char *right = s;
while (*right++) ;
right -= 2;
while (right >= left) {
char var = *left;
*left++ = *right;
*right-- = var;
}
return s;
}