1.非递归(arr[]:所需逆序的字符串数组,sz:字符串数组的长度)
void reverse(char arr[], int sz)
{
int i = 0;
int j = sz - 1;
char tmp = 0;
while (i <= j)
{
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
2.递归的方式(i:数组首元素下标,j:字符串数组‘\0’的下标-1)
void reverse(char arr[],int i,int j)
{
if (i >= j)
return;
char tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
reverse(arr, i + 1, j - 1);
}
3.递归方式(函数只传一个指针)
void reverse(char* str)
{
int len = (int)strlen(str);
char* p = str + len - 1;
if (strlen(str) < 2)
return;
char tmp = *str;
*str = *p;
*p = '\0';
reverse(str + 1);
*p = tmp;
}
4.递归方式(函数只传一个指针,而且不能使用关于字符串的库函数)
void reverse(char* str)
{
char tmp = 0;
char* p = str;
static int x = 0;
while (*p!='\0')
{
p++;
}
char* y = p -1- (x++);
if (str >= y)
return;
tmp = *str;
*str = *y;
*y = tmp;
reverse(str + 1);
}