【漫步刷题路】- 逆序字符串II

简介: 【漫步刷题路】- 逆序字符串II

🚀题目要求:

字符串:I love you

逆序后结果: you love me


🥇逆置法

假设逆置: Man  Max

->整体逆置:  xaM naM

->分别逆置  对xaM逆置:Max

                    对naM逆置:Man

->最终结果为: Max Man


🚖思路:

  • 先整体逆置
  • 定义两个指针,一个start,一个end,end负责移动。遇到字符串的空格就停下来,逆置[start,end-1]区间字符的内容 然后end和start指向end+1的位置。再继续寻找空格
  • 当end遇到的是\0,说明已经到了字符串的尾了,退出循环

🥫图解


🍔代码

#include<stdio.h>
#include<assert.h>
#include<string.h>
//区间逆置
void reverse(char* left, char* right)
{
  assert(left && right);
  while (left < right)
  {
    char str = *right;
    *right = *left;
    *left = str;
    right--;
    left++;
  }
}
int main()
{
  char str[100] = "Chase the wisdom 99";
  int len = strlen(str);
  //1.先整体逆置
  reverse(str, str + len - 1);
  //2.分别逆置,以空格为分隔 
  char* end = str;
  char* start = str;
    //循环判断条件:end指向的字符不是\0
  while (*end != '\0')
  {
        //当end没有遇到\0 和空格就继续
    while ( (*end != '\0')  && (*end != ' '))
    {
      end++;
    }
        //当end跳出循环时,指向的就是空格或者\0  逆置[start,end-1]的内容
    reverse(start, end-1);
        //end向后移动,进行下一次循环
        //start从end位置开始,重新定义起始区间
        end++;
    start = end;
  }
  printf(str);
  return 0;
}



目录
打赏
0
0
0
0
1
分享
相关文章
|
11月前
|
Ruby游戏开发揭秘:如何用简单的代码构建你的第一个猜数字游戏?
【8月更文挑战第31天】在编程学习之旅中,开发简易游戏是理解基础概念如控制流程、输入输出及数据结构的好方法。本指南将带你从零开始,用 Ruby 构建一个猜数字游戏。游戏设计为让玩家猜一个 1-100 间的随机数。文中详细介绍了所需环境的搭建过程、代码编写步骤,包括初始化游戏、处理猜测、读取输入和启动游戏循环的核心逻辑。完成这些后,你不仅能拥有一个功能完备的游戏,还将掌握 Ruby 的基本语法与特性,为进一步探索编程世界打下坚实的基础。
139 0
全球地表水数据集JRC Global Surface Water Mapping Layers, v1.2数据
全球地表水数据集JRC Global Surface Water Mapping Layers, v1.2数据
263 0
Java变量、数据类型和运算符 1
Java变量、数据类型和运算符
154 0
【Django跨域】一篇文章彻底解决Django跨域问题!
还有人不会用Django配置CORS? 耗时3600秒整理的资料直接拿走!一篇文章彻底解决Django跨域问题! 本文包含以下内容:Django解决跨域问题,Django解决跨域携带Cookie问题等。
4757 0
解决高并发下 【simpleDateFormat】 出现转换异常的问题
解决高并发下 【simpleDateFormat】 出现转换异常的问题
170 0
C语言-八道笔试题由浅入深玩转指针
本文章将带你刷8道比较有意思的指针笔试题,笔者将由深入浅出解析这些题目!必要的题目,作者已经加上内存布局图!希望本文对你有所帮助!
468 0
C语言-八道笔试题由浅入深玩转指针
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等