【C】逆序字符串(俩种递归思路)

这篇具有很好参考价值的文章主要介绍了【C】逆序字符串(俩种递归思路)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

递归 字符串逆序,起点, C语言学习,c语言,算法,c++,开发语言,后端
博客主页: XIN-XIANG荣
系列专栏:【从0到1,C语言学习】
一句短话:你若盛开,蝴蝶自来!
博客说明:尽己所能,把每一篇博客写好,帮助自己熟悉所学知识,也希望自己的这些内容可以帮助到一些在学习路上的伙伴,文章中如果发现错误及不足之处,还望在评论区留言,我们一起交流进步!😊

前言

😽很简单的逆序字符串实现,记录一种不容易想到的递归思路!

实现要求:

将参数字符串中的字符反向排列,不是逆序打印。

比如:

char arr[ ] = “abcdef”;

逆序之后数组的内容变成:fedcba

思路1:

抓住递归的核心思想将事件大事化小,要将整个字符串逆序,可以先将字符串中的首字符和末字符交换,再将中间的字符串再逆置;

而中间的字符串可以再次用上面的思路递归,直到首尾符的中间再没有字符串;

递归 字符串逆序,起点, C语言学习,c语言,算法,c++,开发语言,后端

要想将中间的内容再当成一个字符串进行递归,就需要在其后在其后放置一个\0,而因为要放置这个\0,首字符就无法放置在字符串末尾完成交换,此时可以将这个字符用一个中间变量存储起来,等到中间的字符串递归完成逆序后,再将存储起来的首字符放到末字符的位置。

递归 字符串逆序,起点, C语言学习,c语言,算法,c++,开发语言,后端

#include<stdio.h>
#include<assert.h>
#include<string.h>
void reverse(char* str)
{
	assert(str);
	char tmp = *str;
	int len = strlen(str);
	*str = *(str + len - 1);

	*(str+len - 1) = '\0';

	if (my_strlen(str + 1) >= 2)
	{
		reverse(str + 1);
	}
	*(str + len - 1) = tmp;
}

int main()
{
	char arr[] = "abcdefg";
	reverse(arr);
	printf("%s\n", arr);

	return 0;
}

思路2:

实现一个递归函数将字符串俩俩交换即可。

递归 字符串逆序,起点, C语言学习,c语言,算法,c++,开发语言,后端

#include<stdio.h>
#include<assert.h>
#include<string.h>
void reverse(char arr[], int left, int right)
{
	assert(arr);
	if (left < right)
	{ 
		char tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		reverse(arr, left + 1, right - 1);
	}
}

int main()
{
	char arr[] = "abcdefg";
	int left = 0;
	int right = strlen(arr)-1;
	reverse(arr, left, right);

	printf("%s\n", arr);

	return 0;
}

结语

各位小伙伴,看到这里就是缘分嘛,希望我的这些内容可以给你带来那么一丝丝帮助,可以的话三连支持一下呗😁!!! 感谢每一位走到这里的小伙伴,我们可以一起学习交流,一起进步😉!!!加油🏃!!!

递归 字符串逆序,起点, C语言学习,c语言,算法,c++,开发语言,后端文章来源地址https://www.toymoban.com/news/detail-655044.html

到了这里,关于【C】逆序字符串(俩种递归思路)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言学习系列-->字符函数和字符串函数

    包含头文件: 函数 如果它的参数复合下列条件就返回真(一个非零数字) iscntrl 任何控制字符 任何控制字符 空白字符:空格’ ‘,换页’f’,换行’n’,回车’r’,制表符’t’或者垂直制表符’v’ isdigit 十进制数字0~9 isxdigit 十六进制数字,包括所有十进制数字,小

    2024年02月09日
    浏览(36)
  • C语言学习NO.13-字符函数(三)-strncpy,strncat,strncmp长度受限制的字符串函数

    •使用时需要包含头文件string.h • 将源字符串的前num个字符复制到目标。如果源C字符串的末尾在复制num个字符之前找到\\\'\\0\\\',剩下自动记0,直到总共写入了num个字符。 •拷贝num个字符从源字符串到目标空间。 •如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的

    2024年01月24日
    浏览(70)
  • 递归--打印一个字符串的全部排列(java)

    自负串全排序: 举例: abc 的全排序是: abc acb bac bca cba cab 因为每个字符都要选,其实就是选择每个字符的顺序,那我们递归时,就可以把不同顺序一直递归下去. 代码演示 解题思路: 我们可以按上面的代码去做,只需要用HashSet 去保存答案,就会去重了,但这样并没有优化效率,在递归时

    2024年02月06日
    浏览(52)
  • 【LeetCode: 97. 交错字符串 | 暴力递归=>记忆化搜索=>动态规划 | 位置对应】

    🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文

    2024年02月05日
    浏览(46)
  • 算法练习-右旋字符串(思路+流程图+代码)

            难度:简单         分类:字符串         难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。以下内容均为个人笔记,旨在督促自己认真学习。         字符串的【右旋转】操作是把字符串尾部的若干个字符转移到字符串的前

    2024年01月22日
    浏览(40)
  • JAVA刷题之字符串的一些个人思路

    感谢您的阅读! ꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶ 个人

    2024年02月05日
    浏览(40)
  • Leetcode 75——1768.交替合并字符串 解题思路与具体代码【C++】

    1768. 交替合并字符串 - 力扣(LeetCode) 给你两个字符串  word1  和  word2  。请你从  word1  开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。 返回  合并后的字符串  。 1 = word1.length, word2.length = 100

    2024年02月07日
    浏览(74)
  • 【Day28】力扣算法(超详细思路+注释) [1790. 仅执行一次字符串交换能否使两个字符串相等 ] [328. 奇偶链表 ][148. 排序链表]

    原题链接:1790. 仅执行一次字符串交换能否使两个字符串相等 题目描述 : 给你长度相等的两个字符串 s1 和 s2 。一次 字符串交换操作的步骤如下:选出某个字符串中的两个下标(不必不同),并交换这两个下标所对应的字符。 如果对 其中一个字符串 执行 最多一次字符串交

    2024年01月22日
    浏览(43)
  • C //练习 4-12 运用printd函数的设计思想编写一个递归版本的itoa函数,即通过递归调用把整数转换为字符串。

    练习 4-12 运用printd函数的设计思想编写一个递归版本的itoa函数,即通过递归调用把整数转换为字符串。 注意:代码在win32控制台运行,在不同的IDE环境下,有部分可能需要变更。 IDE工具:Visual Studio 2010   代码块:

    2024年01月18日
    浏览(71)
  • 字符串表达式计算(a+b/(a-b))的思路与实践

    为满足业务需要,需要为项目中自定义模板添加一个计算字段的组件,通过设置字符串表达式,使用时在改变表达式其中一个字段的数据时,自动计算另外一个字段的值。 本篇为上篇,介绍原理,简单实现一个工具,输入 字符串表达式 ,解析其中的参数,输入参数 计算结果

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包