C语言_字符串逆序(递归实现)
//字符串逆序
下面为常规方法:
int main()
{
char arr[] = "abcdef";
//reverse_string();
int sz = sizeof(arr) / sizeof(arr[0]); //7
//strlen(arr)=6;
int left = 0;
int right = sz-2;
char tmp = 0;
while (left < right)
{
tmp = arr[right];
arr[right] = arr[left];
arr[left] = tmp;
left++;
right--;
}
printf("%s\n",arr);
return 0;
}
字符串逆序(递归实现)
第一种方法:
int my_strlen(char * str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
void reverse(char* str)
{
int sz = my_strlen(str);
if (sz >= 2)
{
char tmp = *str;
*str = *(str + sz - 1);
*(str + sz - 1) = '\0';
reverse(str + 1);
*(str + sz - 1) = tmp;
}
}
int main()
{
char arr[] = "abcdef";
reverse(arr);
printf("%s\n",arr);
return 0;
}
字符串逆序(递归实现)
第二种方法:
int my_strlen(char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
void reverse(char arr[],int left,int right)
{
char tmp = arr[right];
arr[right] = arr[left];
arr[left] = tmp;
if (left < right)
{
reverse(arr,left+1,right-1);
}
}
int main()
{
char arr[] = "abcdef";
int left = 0;
int right = my_strlen(arr)-1;
reverse(arr, left, right);
printf("%s\n", arr);
return 0;
}
浙公网安备 33010602011771号