倒置字符串(倒置单词,标点不倒置)

简介: 倒置字符串(倒置单词,标点不倒置)

核心思想:

先将整个字符串逆置,然后再逆置每个单词

遇到空格数组地址+1走到下一个单词首部

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//核心思想:
//先将整个字符串逆置,然后再逆置每个单词
//遇到空格数组地址+1走到下一个单词首部
void daozhi(char* left, char* right)//逆置函数
{
  while (left < right)
  {
    char tmp = *left;
    *left = *right;
    *right = tmp;
    left++;
    right--;
  }
}
//实现本题逆置函数
void Daozhi(char* arr, int len)
{
  //先将整个字符串逆置
  daozhi(arr, arr + len - 1);//arr+len-1就是字符串尾部字符
  while (*arr)
  {
    char* n = arr;
    while (*arr != ' ' && *arr != '\0')//遇到空格或者'\0'就停止循环,此时*arr就是空格或者'\0'
    {
      arr++;
    }
    daozhi(n, arr - 1);//实现每个单词逆置
    if (*arr == ' ')
    {
      arr++;//如果*arr是空格,直接地址++到下一个单词首部字符
    }
  }
}
int main()
{
  char arr[100] = { 0 };
  gets(arr);
  int len = strlen(arr);
  Daozhi(arr,len);
  printf("%s", arr);
  return 0;
}

 

相关文章
|
18天前
|
测试技术
leetcode-1592:重新排列单词间的空格
leetcode-1592:重新排列单词间的空格
28 0
|
11天前
|
缓存 C语言
C语言 : 将一句话的单词进行倒置(逆序)
C语言 : 将一句话的单词进行倒置(逆序)
23 0
|
18天前
leetcode-2000:反转单词前缀
leetcode-2000:反转单词前缀
30 0
leetcode-2000:反转单词前缀
|
18天前
|
Java API C++
leetcode-151:翻转字符串里的单词
leetcode-151:翻转字符串里的单词
36 0
|
11月前
|
编译器 C语言
C语言:将一句话的单词进行倒置,标点不倒置。
总体思路: (可以把两步顺序调换) 第一步: 把 整个字符串 逆序 (知道 整个字符串 的首尾地址后,一对一对向整个字符串中间靠拢交换)
|
11月前
|
算法 C语言
(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)
(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)
115 0
|
11月前
|
C语言
【每日一题】 将一句话单词倒置,标点不倒置
【每日一题】 将一句话单词倒置,标点不倒置
155 0
【每日一题】 将一句话单词倒置,标点不倒置
|
18天前
|
Java
【剑指offer】-翻转单词序列-40/67
【剑指offer】-翻转单词序列-40/67
|
7月前
|
算法 程序员
倒置字符串
倒置字符串
|
8月前
|
算法
【每日挠头算法题(8)】最后一个单词的长度|重新排列字符串
【每日挠头算法题(8)】最后一个单词的长度|重新排列字符串