递归实现字符串翻转
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归实现字符串翻转相关的知识,希望对你有一定的参考价值。
编写一个函数reverse_string(char * string)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。
非递归实现
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
以上是关于递归实现字符串翻转的主要内容,如果未能解决你的问题,请参考以下文章
C 语言字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | 引入线程安全概念 )
华为OD机试真题Python实现翻转单词顺序真题+解题思路+代码(2022&2023)
C 语言字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序打印字符串 | 递归要素 | 递归停止条件 | 递归操作 )