首页 > 其他分享 >字符串逆序(递归实现)

字符串逆序(递归实现)

时间:2024-08-10 14:23:38浏览次数:8  
标签:arr 递归 int char str 字符串 include 逆序

题目内容:

  编写一个函数reverse_string(char*string)(逆序实现)

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

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

  比如:char[ ] = "abcdef"      逆序之后是数组内容变成:"fedcba";

非函数:

#include<stdio.h>
int main()
{
	char arr[] = "abcdef";
	int left = 0;
	char sz = sizeof(arr) / sizeof(arr[0]);
	int right = sz - 2;
	while(left<right)
	{
		char temp = arr[left];
		arr[left] = arr[right];
		arr[right] = temp;
		left++;
		right--;
	}
	printf("%s\n",arr);
	return 0;
}

 非递归函数求解 :

#include<stdio.h>
#include<string.h>


void reverse(char arr[])
{
	int left = 0;
	int right = strlen(arr) - 1;
	while(left<right)
	{
		char temp = arr[left];
		arr[left] = arr[right];
		arr[right] = temp;
		left++;
		right--;
	}
}

int main()
{
	char arr[] = "abcdef";
	reverse(arr);
	printf("%s\n",arr);
	return 0;
}

函数递归:

#include<stdio.h>
#include<string.h>
 int my_strlen(char* str)
{
	int count = 0;
	while(*str != '\0')
	{
		count++;
		str++;	
	}
	return count;
}

void reverse (char str[])
{
	int len = my_strlen(str);
    if (len <= 1) // 如果字符串长度小于等于1,则无需反转
        return;
    char temp = str[0]; // 保存第一个字符
    str[0] = str[len - 1]; // 将最后一个字符放到第一个位置
    str[len - 1] = '\0'; // 将最后一个字符位置设为字符串结束符

    reverse(str + 1); // 递归处理剩余的字符串

    str[len - 1] = temp; 
}

int main()
{
	char arr[] = "abcdef";
	reverse(arr);
	printf("%s\n",arr);
	return 0;
}

编译结果:

标签:arr,递归,int,char,str,字符串,include,逆序
From: https://blog.csdn.net/m0_73875968/article/details/141087267

相关文章

  • 回溯函数(算法)杂谈 -----可主动控制撤回逻辑处理的递归函数
    概述回溯,对接触了算法的人而言,并不陌生,其实严谨地说回溯函数就是递归函数,只不过在使用上,人们将它的一些细节抽离出来,进而演化出了所谓的回溯,在算法导论中,与其相关的被称为“回溯搜索算法”。回溯本质是递归的副产物,只要有递归调用就会有回溯。回溯法也经常和二叉树或N叉树......
  • C++ int32, int64 和十六进制字符串的转换
       #include<iostream>#include<string>#include<cstring>//用于memset,strlen#include<algorithm>/***@brife:将一个int64数字转为十六进制字符串*@note:int64Value:0,hexStr:0000000000000000int64Value:-1,h......
  • 指针、字符串函数
    (一)指针操作一维字符型数组const关键字(只读)eg:(1)int *p;  //基类型(目标类型)(2)int a= 10;   ①const int *p=&a;  //const限定是基类型,表示不能通过*p的方式修改基类型的数据   ②int const *p=&a;  //与①等价     ......
  • 每天深解一个字符串类函数之strcat函数
    目录前言:一、引用头文件二、strcat函数的作用三、理解strcat函数的定义1、返回类型2、参数四、使用strcat函数1、编写代码2、调试运行控制台监视器五、注意要点六、模拟实现前言:每天深入了解一个字符串类函数今天我们要学习的是strcat函数,一个追加字符串......
  • leetcode-12 字符串
    12.2字符串比较242有效的字母异位词给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。//解法1:排序后逐个比较字符boolisAnagram(strings,stringt){if(s.length()......
  • mysql数据库:字符串函数
    mysql数据库:字符串函数mysql数据库:字符串函数concat(str1,str2,…strn)连接str1,str2,…,strn为一个字符串selectconcat('abc','def')replace(str,a,b)用字符串b替换str中所有出现的字符串ainsert(str,x,y,instr)将字符串str,从索引x开始,y个字符长度的子串替换为i......
  • strlen求字符串长度 模拟实现strlen函数 strcpy函数 模拟实现strcpy strcat函数 模拟
    文章目录1.1strlen求字符串长度1.2模拟实现strlen函数2.1strcpy函数2.2模拟实现strcpy3.1strcat函数3.2模拟实现strcat1.1strlen求字符串长度strlen是一个库函数所包含的头文件为#include<string.h>,这里我们可以在Cplusplus上找到strlen所包含的头文件以及strlen......
  • 151. 反转字符串中的单词【 力扣(LeetCode) 】
    一、题目描述  给你一个字符串s,请你反转字符串中单词的顺序。  单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。  返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾......
  • 字符函数和字符串函数(C语言)
    目录一.字符分类函数二.字符转换函数三.多种函数的使用和模拟实现3.1strlen函数3.2strcpy函数3.3strcat函数3.4strcmp函数3.5 strncpy   strncat   strncmp ......
  • 代码随想录算法训练营day08|344.反转字符串,541.反转字符串II,卡码网:54.替换数字
    344.反转字符串题目链接:https://leetcode.cn/problems/reverse-string/description/我的代码:classSolution{public:voidreverseString(vector<char>&s){for(inti=0;i<s.size()/2;i++){chartemp=s[i];s[i]=......