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;
}


posted @ 2026-04-12 11:12  火炎焱大兔汁  阅读(3)  评论(0)    收藏  举报