【漫步刷题路】- 逆序字符串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
分享
相关文章
|
9月前
|
力扣每日一题 6/16 字符串 + 随机一题 动态规划/数学
力扣每日一题 6/16 字符串 + 随机一题 动态规划/数学
66 0
每日一刷《剑指offer》字符串篇之编辑距离
每日一刷《剑指offer》字符串篇之编辑距离
78 0
每日一刷《剑指offer》字符串篇之编辑距离
|
10月前
|
每日一刷《剑指offer》字符串篇之左旋转字符串
每日一刷《剑指offer》字符串篇之左旋转字符串
74 0
每日一刷《剑指offer》字符串篇之左旋转字符串
|
10月前
【刷题-牛客】链表内指定区间反转
【刷题-牛客】链表内指定区间反转
65 0
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
73 0
【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串
【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串
93 0
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
代码随想录刷题|LeetCode 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.反转字符串里的单词 剑指Offer58-II.左旋转字符串
代码随想录刷题|LeetCode 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.反转字符串里的单词 剑指Offer58-II.左旋转字符串
代码随想录刷题|LeetCode 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.反转字符串里的单词 剑指Offer58-II.左旋转字符串
力扣刷题记录——709. 转换成小写字母、771. 宝石与石头、704. 二分查找
力扣刷题记录——709. 转换成小写字母、771. 宝石与石头、704. 二分查找
138 0
力扣刷题记录——709. 转换成小写字母、771. 宝石与石头、704. 二分查找
【Day26】LeetCode算法刷题 [856. 括号的分数 ] [234. 回文链表]
学习LeetCode算法刷题 [856. 括号的分数 ] [234. 回文链表]。
211 0
【Day26】LeetCode算法刷题 [856. 括号的分数 ] [234. 回文链表]