倒置字符串

简介: 倒置字符串


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

目的:输入一句英文(长度不超过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;
}

相关文章
|
10月前
|
缓存 C语言
C语言 : 将一句话的单词进行倒置(逆序)
C语言 : 将一句话的单词进行倒置(逆序)
111 0
|
10月前
|
机器学习/深度学习 算法 测试技术
【组合数学 容斥原理 逆向思考】2930. 重新排列后包含指定子字符串的字符串数目
【组合数学 容斥原理 逆向思考】2930. 重新排列后包含指定子字符串的字符串数目
|
7月前
|
算法
如何反转给定的字符串?
【8月更文挑战第23天】
66 0
|
9月前
|
算法
数据结构和算法——散列函数的构造方法(直接定址法、除留余数法、数字分析法、折叠法、平方取中法、ASCII码加和法、前三字符移位法)
数据结构和算法——散列函数的构造方法(直接定址法、除留余数法、数字分析法、折叠法、平方取中法、ASCII码加和法、前三字符移位法)
112 0
|
编译器 C语言
C语言:将一句话的单词进行倒置,标点不倒置。
总体思路: (可以把两步顺序调换) 第一步: 把 整个字符串 逆序 (知道 整个字符串 的首尾地址后,一对一对向整个字符串中间靠拢交换)
177 0
|
10月前
|
存储 编译器 C语言
Day2 排序子序列、倒置字符串
Day2 排序子序列、倒置字符串
72 0
|
10月前
|
机器学习/深度学习 算法 程序员
【算法训练-字符串 二】【字符串计算】字符串相加、字符串相乘
【算法训练-字符串 二】【字符串计算】字符串相加、字符串相乘
64 0
|
算法 程序员
倒置字符串
倒置字符串
倒置字符串(倒置单词,标点不倒置)
倒置字符串(倒置单词,标点不倒置)
71 0
【每日挠头算法(4)】字符串相加|字符串相乘
【每日挠头算法(4)】字符串相加|字符串相乘

热门文章

最新文章