使用C/C++实现对字符串的反转(递归和非递归)
2013-10-28 15:50
344 查看
这是非递归的:
/*实现字符串翻转*/
char* reverse_str(char* str)
{
if(NULL == str) //字符串为空直接返回
{
return str;
}
char *begin;
char *end;
begin = end = str;
while(*end != '\0') //end指向字符串的末尾
{
end++;
}
--end;
char temp;
while(begin < end) //交换两个字符
{
temp = *begin;
*begin = *end;
*end = temp;
begin++;
end--;
}
return str; //返回结果
}
void main()
{
char str[] = "123456";
printf(reverse_str(str));
}
递归的:
char *reverse(char *str)
{
int len = strlen(str);
if( len > 1 )
{
char ctemp =str[0] ;
str[0] = str[len-1];
str[len-1] = '\0';
reverse(str+1);
str[len-1] =ctemp;
}
return str;
}
/*实现字符串翻转*/
char* reverse_str(char* str)
{
if(NULL == str) //字符串为空直接返回
{
return str;
}
char *begin;
char *end;
begin = end = str;
while(*end != '\0') //end指向字符串的末尾
{
end++;
}
--end;
char temp;
while(begin < end) //交换两个字符
{
temp = *begin;
*begin = *end;
*end = temp;
begin++;
end--;
}
return str; //返回结果
}
void main()
{
char str[] = "123456";
printf(reverse_str(str));
}
递归的:
char *reverse(char *str)
{
int len = strlen(str);
if( len > 1 )
{
char ctemp =str[0] ;
str[0] = str[len-1];
str[len-1] = '\0';
reverse(str+1);
str[len-1] =ctemp;
}
return str;
}
相关文章推荐
- 使用C/C++编写函数,实现字符串反转,要求不使用任何系统函数,且时间复杂度最小
- C/C++面试程序题(一)——字符串反转、链表反转的递归、非递归实现
- 使用递归实现字符串反转
- 使用递归实现字符串的反转
- 使用递归实现字符串反转
- C++面试题,不使用临时变量实现字符串反转
- 使用单链表反转的递归和非递归实现方式
- 用递归实现字符串反转
- 递归实现字符串反转
- 由字符串反转(使用递归)引申出来一道Java面试题
- 递归思想,实现字符串反转
- 递归实现字符串字符反转
- 二叉树的反转,递归实现和非递归实现。
- C++不使用变量求字符串长度strlen函数的实现方法
- 反转指向字符串反转C++实现源码(带测试用例)
- 关于一道面试题,使用C#实现字符串反转算法
- 运用递归实现字符串反转
- CI1.2 用c或c++实现void reverse(char* str)函数,即反转一个null结尾的字符串
- 一般人不容易想到的使用递归实现字符串的翻转。
- Android-使用C++实现调用本地方法返回字符串显示在界面上/NDK-JNI开发实例(八)