倒置字符串

简介: 倒置字符串


/***********************************************************************

目的:输入一句英文(长度不超过100),并将其中的单词进行倒置,标点不倒置。如 I like beijing. 倒置后变为 beijing. like I

分析:三步翻转法

▶ 1、字符串整体翻转:

.gnijieb ekil I

▶ 2、每个单词逆序

beijing. like I

平台:Visual studio 2017 && windows

*************************************************************************/

📝 实现代码1:

#include<stdio.h>
#include<string.h>
void reverse(char* left, char* right)
{
  while(left < right)
  {
    char temp = 0;
    temp = *left;
    *left = *right;
    *right = temp;
    left++;
    right--;  
  }
}
int main()
{
  char arr[100] = { 0 };
  //输入字符串
  gets(arr);
  //求字符串的长度
  int len = strlen(arr);
  //字符串整体逆置,确定左下标和右下标
  reverse(arr, arr + len - 1);  
  //每个单词逆置
  char* start = arr;
  while(*start)
  {
    char* end = start;
    while(*end != ' ' && *end != '\0')
    {
      end++;
    }
    reverse(start, end - 1);
    if(*end == ' ')
    {
      //说明后面还有未逆置的单词
      start = end + 1;
    }
    else
    {
      //遇到了'\0',不能再往后了
      start = end;
    } 
  }
  printf("%s\n", arr);
  return 0;
}

相关文章
|
索引
【LeetCode】917. 仅仅反转字母、387. 字符串中的第一个唯一字符
目录 917. 仅仅反转字母 387. 字符串中的第一个唯一字符
48 0
|
6月前
|
缓存 C语言
C语言 : 将一句话的单词进行倒置(逆序)
C语言 : 将一句话的单词进行倒置(逆序)
62 0
|
3月前
|
算法
如何反转给定的字符串?
【8月更文挑战第23天】
45 0
|
6月前
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
编译器 C语言
C语言:将一句话的单词进行倒置,标点不倒置。
总体思路: (可以把两步顺序调换) 第一步: 把 整个字符串 逆序 (知道 整个字符串 的首尾地址后,一对一对向整个字符串中间靠拢交换)
124 0
|
6月前
|
存储 编译器 C语言
Day2 排序子序列、倒置字符串
Day2 排序子序列、倒置字符串
46 0
|
算法 程序员
倒置字符串
倒置字符串
倒置字符串(倒置单词,标点不倒置)
倒置字符串(倒置单词,标点不倒置)
49 0
逆序一个字符串的每一组单词(不是倒叙)
整体思路: 1.先将整个字符串倒叙:i like china.->.anihc ekil i 2.将倒叙后的每一块单词再倒叙:.anihc->china. 想必大家都发现了,倒叙整个字符串和倒叙每一块是一样的,那么我们不妨写一个倒叙的函数在这里用reserve表示!
72 0
|
C语言 容器
互换函数和反转字符串
互换函数和反转字符串
100 0