码迷,mamicode.com
首页 > 其他好文 > 详细

递归实现字符串翻转

时间:2016-03-22 06:38:55      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:字符串   include   逆序   翻转   

编写一个函数reverse_string(char * string)

    实现:将参数字符串中的字符反向排列。

    要求:不能使用C函数库中的字符串操作函数。

  1. 非递归实现

void reverse(char *str)
{
	char *left = str;
	char *right = str + strlen(str) - 1;
	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}

2.递归实现

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char* reverse_string(char * string,int len);
	int i,LEN=0;
	char arr[]="abcd";
	LEN=strlen(arr);
	char ret[LEN];
	char *p=arr;
	for(i=0;i<LEN;i++)
		ret[i]=*(reverse_string(p,LEN));
	printf("%s\n",ret);
	system("pause");
	return 0;
}
char* reverse_string(char * string,int len)
{
	int static j=0;
	char s[len]="0";
	if(*string==‘\0‘)
		return s;
	else
	{
		s[len-j]=*string;
		j++;
		reverse_string(string++);
	}
}

递归优化:

int length(char *str)
{
	int count = 0;
	while (*str)
	{
		count++;
		str++;
	}
	return count;
}
void reverse(char *str)
{
	int len = length(str);
	if (len== 0)
	{
		return;
	}
	else
	{
		char tmp = *str;
		*str = *(str + len - 1);
		*(str + len - 1) = ‘\0‘;
		reverse(1+str);
		*(str + len - 1) = tmp;
	}
}
int main()
{
	char arr[] = "bit-tech";
	reverse(arr);
	printf("%s\n", arr);
	system("pause");
	return 0;
}

递归调用图如下技术分享

本文出自 “sunshine225” 博客,请务必保留此出处http://10707460.blog.51cto.com/10697460/1753594

递归实现字符串翻转

标签:字符串   include   逆序   翻转   

原文地址:http://10707460.blog.51cto.com/10697460/1753594

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!