华为机试每日一练--第十题: 句子逆序

简介: 华为机试每日一练--第十题: 句子逆序

练习题入口

问题描述

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”

所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符

数据范围:输入的字符串长度满足 1≤n≤1000

注意本题有多组输入

输入描述:

输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。

输出描述:

得到逆序的句子

解题分析

这道题跟 字符串反转一样,我们首先要解决的问题还是怎么接收。因为这次输入的是句子,而句子里面有空格,所以我们就不能用scanf接收了,要用gets()。


这道题要求把句子中的单词反向输出,所以我们可以先把句子全体逆序,然后在把单个的单词逆序,这样就解决问题啦(翻转的方法跟字符串反转一样,这里我就不加赘述了)


代码实现

#include<stdio.h>
void reverse(char* left,char* right)
{
    while(left<right)
    {
        char tmp = *left;
        *left = *right;
        *right =tmp;
        left++;
        right--;
    }
}
int main()
{
    char arr[1000];
    gets(arr);
    int len = strlen(arr);
    char* left=arr;
    char* right=arr;
    right+=len-1;
    reverse(left,right);
    char* start = arr;
    char* end = arr;
    while(*end !='\0')
    {
        while(*end!=' '&&*end!='\0')
        {
            end++;
        }
    reverse(start,end-1);
    start = ++end;
    }
    printf("%s",arr);
   return 0; 
}
相关文章
【每日一题】牛客网——链表分割
【每日一题】牛客网——链表分割
|
8月前
华为机试HJ13:句子逆序
华为机试HJ13:句子逆序
|
10月前
|
算法 索引
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
|
算法 C++
C/C++每日一练(20230510) 编辑距离、多数元素、数列累和
C/C++每日一练(20230510) 编辑距离、多数元素、数列累和
65 0
|
存储 算法 C语言
【C语言蓝桥杯每日一题】—— 递增序列
递增序列🙌 对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 45 45 度的斜线上,这两个字母从左向右看、或者从上向下看是递增的。
132 0
华为机试每日一练--第四题:字符串最后一个单词的长度
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
华为机试每日一练--第四题:字符串最后一个单词的长度
华为机试每日一练--第九题: 字符串反转
华为机试每日一练--第九题: 字符串反转
华为机试每日一练--第九题: 字符串反转
|
机器学习/深度学习
华为机试每日一练--第六题: 蛇形矩阵
华为机试每日一练--第六题: 蛇形矩阵
华为机试每日一练--第六题: 蛇形矩阵
华为机试每日一练--第八题: 取近似值
华为机试每日一练--第八题: 取近似值
华为机试每日一练--第八题: 取近似值
【每日一题Day35】LC878第N个神奇数字 | 二分查找 找规律 + 数学
思路:将问题**“第n个神奇数是x”转化为“小于等于x的神奇数有n个”**,由于x越大n一定越大,因此可以使用二分法查找一个神奇数小于等于n的区间(0,right],最后返回右边界
179 0
【每日一题Day35】LC878第N个神奇数字 | 二分查找 找规律 + 数学