写点什么

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

作者:芒果酱
  • 2022 年 7 月 15 日
  • 本文字数:647 字

    阅读完需:约 2 分钟

🚀题目要求:

字符串: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;}
复制代码


发布于: 刚刚阅读数: 3
用户头像

芒果酱

关注

我们都在努力奔跑,我们都是追梦人! 2022.02.14 加入

个人宣言:功崇惟志,业广惟勤 个人简介: 0.在校大学生 1.CSDN:C/C++领域新星创作者 2.掘金LV3创作者 3.华为云开发者社区云享专家 4.阿里云开发者社区专家博主 5.InfoQ创作者

评论

发布
暂无评论
【漫步刷题路】- 逆序字符串II_7 月月更_芒果酱_InfoQ写作社区