逆序一个字符串的每一组单词(不是倒叙)

简介: 整体思路:1.先将整个字符串倒叙:i like china.->.anihc ekil i2.将倒叙后的每一块单词再倒叙:.anihc->china.想必大家都发现了,倒叙整个字符串和倒叙每一块是一样的,那么我们不妨写一个倒叙的函数在这里用reserve表示!

eg:输入:i like china.


    输出:china. like i


关于这个题呢?想必大家有很多写法,在这里小编为大家提供一种方法.


整体思路:


1.先将整个字符串倒叙:i like china.->.anihc ekil i


2.将倒叙后的每一块单词再倒叙:.anihc->china.


想必大家都发现了,倒叙整个字符串和倒叙每一块是一样的,那么我们不妨写一个倒叙的函数在这里用reserve表示!


整体代码如下:具体细节代码中标识

void reserve(char* left, char* right)
{
    //left:最左边元素
    //right:最右边元素
  while (left < right)
  {
  char tmp = *left;
  *left = *right;
  *right = tmp;
  left++;
  right--;
  }
}
int main()
{
  char arr[100] = { 0 };
  //输入
  gets(arr);
  //倒叙字符串
  int len = strlen(arr);
  reserve(arr, arr + len - 1);
  //倒叙每一组单词
  char* cur = arr;
  while (*cur)
  {
        //*strat开始头一个元素
  char* strat = cur;
  while (*cur != ' ' && *cur != '\0')
  {
    cur++;
  }
  reserve(strat, cur - 1);
  while (*cur == ' ')
  {
    cur++;
  }
  }
  //输出
  printf("%s", arr);
  return 0;
}


这道题就这样完成啦!有哪点看不懂的欢迎私信或者在评论区提问!!!


目录
打赏
0
0
0
0
1
分享
相关文章
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
Day2 排序子序列、倒置字符串
Day2 排序子序列、倒置字符串
70 0
【每日挠头算法题(8)】最后一个单词的长度|重新排列字符串
【每日挠头算法题(8)】最后一个单词的长度|重新排列字符串
从排列字符串到排列序列:解析增减字符串匹配问题
题目要求根据给定的字符串 s,构造一个排列序列 perm,其中排列序列中的数字满足以下规则: 如果 perm[i] < perm[i + 1],则对应的字符为 'I'; 如果 perm[i] > perm[i + 1],则对应的字符为 'D'。 我们需要根据字符串 s 中的字符,构造满足上述规则的排列序列 perm。
76 0
逆序字符串 和 字符串的逆序输出 的区别~
逆序字符串 和 字符串的逆序输出 的区别~
123 0
字符串中的第一个唯一字符&&有效的字母异位词(多思路)
字符串中的第一个唯一字符&&有效的字母异位词(多思路)
134 0
字符串中的第一个唯一字符&&有效的字母异位词(多思路)
LeetCode 30串联所有单词的子串&31下一个排列
给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。
128 0
LeetCode 30串联所有单词的子串&31下一个排列
AI助理

你好,我是AI助理

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