字符串逆序(递归和循环)

简介: 字符串逆序(递归和循环)

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


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


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


比如:   char arr[] = "abcdef";


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


题目分析:


字符串逆序,用循环来做很简单,只需要定义两个指针,指针left放在字符串左侧,right放在最后一个有效字符位置,再交换两个指针位置上的字符,left指针往后走,right指针往前走只要两个指针没有相遇,继续交换,两个指针相遇后,逆置结束;用递归实现就相对麻烦一点,当每次传递参数的时候只有刚开始字符串中的那一个\0,在每次递归前,必须手动加上\0,才能继续用strlen计算递归传递过去的字符串长度,这一点是很难想到的。


//循环实现

#include<stdio.h>
#include<string.h>
void reverse_string(char*string)
{
  char *left = string;
  char *right = string+strlen(string) - 1;
  while (right - left > 0)
  {
    int tmp = *left;
    *left = *right;
    *right = tmp;
    left++;
    right--;
  }
}
int main()
{
  char arr[] = "abcdef";
  reverse_string(arr);
  puts(arr);
  return 0;
}

代码讲解:指针right-指针left得到的是left与right之间的元素个数,那么在编程序的时候,只需要控制left与right之间有元素的时候就交换,没有元素的时候就停止循环,交换完成。strlen函数是从传递给strlen的函数参数的地址开始一直往后找,每找到一个字符,就计数加1,知道遇见字符‘\0’为止,用于求字符串长度。


//递归实现

#include<stdio.h>
#include<string.h>
void reverse_string(char* string)
{
  int len = strlen(string);
  char tmp = *string;
  *string = *(string + len - 1);
  *(string + len - 1) = '\0';
  if (strlen(string + 1) >= 2)
    reverse_string(string+ 1);
  *(string + len - 1) = tmp;
}
int main()
{
  char arr[] = "abcdef";
  reverse_string(arr);
  puts(arr);
  return 0;
}

代码讲解:当第一次进入函数后,先将最后一个字符放在第一个字符的位置,但是不急着交换,将本该放在字符串末尾的第一个字符存起来,然后将字符串末尾置为'\0',计算从第二个字符开始,字符串的长度,如果大于1个的话,就进入递归,再重复上面的过程,递归结束后,再将存起来的字符放在交换后应该在的位置即可


总结:循环和递归还是应该尽量选择简单的,即可代码写出来,它的可读性和时间复杂度也是很重要的

相关文章
|
14天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
8081 15
|
13天前
|
人工智能 并行计算 PyTorch
秋叶 ComfyUI 2026 整合包 v3.2 完整部署教程:Python 3.13 + Torch 2.13 全栈升级
秋叶aaaki ComfyUI 2026年8月整合包v3.2正式发布!全面升级Python 3.13.11、PyTorch 2.13.0+cu130及ComfyUI v0.30.2,原生支持MiniMax H3、Wan 2.2、Qwen-Image-2.1等2026主流音视频/图像模型,解压即用,无需环境配置。
2111 12
|
12天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
1805 4
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
11天前
|
人工智能 编解码 并行计算
MiniMax-H3 一键整合包技术文档:8G 显存运行 AI 漫剧制作 —— 角色替换 / 动作迁移 / 文图生视频部署与调参指南
MiniMax H3 是 MiniMax 开源的全模态视频生成模型,支持文/图/音/视多条件输入,输出最高2K、15秒带双声道音频视频。本文档详述其Int8量化版在8GB显存下的本地一键部署、三段式工作流(EDIT/REPLACE/CONTINUE)、参数调优及常见问题排查。(239字)
|
7天前
|
人工智能 Linux 开发者
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
Codex是OpenAI推出的AI编程智能体,可读取本地项目、理解需求并自动修改代码。支持桌面GUI、命令行(CLI)及VS Code/Cursor插件三种形态,覆盖可视化操作、终端高效开发与编辑器无缝集成场景,助开发者用自然语言驱动编码全流程。(239字)
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
|
26天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
3851 10

热门文章

最新文章