【漫步刷题路】- 逆序字符串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;
}



相关文章
|
数据可视化 数据挖掘
R语言生存分析数据分析可视化案例(下)
R语言生存分析数据分析可视化案例
|
Ruby
Ruby游戏开发揭秘:如何用简单的代码构建你的第一个猜数字游戏?
【8月更文挑战第31天】在编程学习之旅中,开发简易游戏是理解基础概念如控制流程、输入输出及数据结构的好方法。本指南将带你从零开始,用 Ruby 构建一个猜数字游戏。游戏设计为让玩家猜一个 1-100 间的随机数。文中详细介绍了所需环境的搭建过程、代码编写步骤,包括初始化游戏、处理猜测、读取输入和启动游戏循环的核心逻辑。完成这些后,你不仅能拥有一个功能完备的游戏,还将掌握 Ruby 的基本语法与特性,为进一步探索编程世界打下坚实的基础。
207 0
|
存储 关系型数据库 MySQL
MySQL备份与恢复
MySQL备份与恢复
225 0
|
Java Android开发
Android JNI 调用
Android JNI 调用
189 1
|
编解码 人工智能
全球地表水数据集JRC Global Surface Water Mapping Layers, v1.2数据
全球地表水数据集JRC Global Surface Water Mapping Layers, v1.2数据
412 0
|
存储 关系型数据库 MySQL
MySql 字符串类型 - text
MySql 字符串类型 - text
151 0
|
存储 SQL Java
Java变量、数据类型和运算符 1
Java变量、数据类型和运算符
185 0
|
前端开发 JavaScript Python
【Django跨域】一篇文章彻底解决Django跨域问题!
还有人不会用Django配置CORS? 耗时3600秒整理的资料直接拿走!一篇文章彻底解决Django跨域问题! 本文包含以下内容:Django解决跨域问题,Django解决跨域携带Cookie问题等。
5117 0
|
存储 设计模式 算法