美文网首页工作生活
试题5:句子逆序

试题5:句子逆序

作者: PersisThd | 来源:发表于2019-07-07 15:05 被阅读0次

试题描述:
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
输入:
I am a boy
输出:
boy a am I

解题思路:以单词间的空格为切入点,划分出每个单词,然后从后往前打印每个单词即可,需要注意首尾两个单词旁边只有一个空格,需要进行特殊处理。

解法一:

#include <stdio.h>
#include <string.h>

void reverse_sentense(char* p, int N)
{
    int a[512];
    int i = 0, j = 0, k = 0;

    for(i = 0; i < N; i++)
    {
        if(p[i] == ' ')
        {
            a[j++] = i;
        }
    }

    for(i = j - 1; i >= 1; i--)
    {

        if(i == j - 1)
        {
            for(k = a[i] + 1; k < N; k++)
            {
                printf("%c", p[k]);
            }
            printf(" ");
        }

        for(k = a[i - 1] + 1; k < a[i]; k++)
        {
            printf("%c", p[k]);
            if(k == a[i] - 1)
            {
                printf(" ");
            }
        }
        if(i == 1)
        {
            for(k = 0; k < a[i-1]; k++)
            {
                printf("%c", p[k]);
            }
            printf(" ");
        }
    }

}

int main()
{
    char str[1024];
    gets(str);

    int len = strlen(str);
    reverse_sentense(str, len);

    return 0;
}

解法二:

#include <stdio.h>
#include <string.h>
 
int main()
{
    char str[10000];
    int a,len,i;
    gets(str);
    len = strlen(str);
    for(i=len-1;i>=0;i--)
    {
        if(str[i]==' ')
        {
            a = i+1;
            while(str[a]!=' ')
            {
                if(a==len)
                    break;
                printf("%c", str[a]);
                a++;
            }
            printf(" ");
        }
 
    }
    i=0;
    while(str[i]!=' ')
    {
        printf("%c",str[i]);
        i++;
    }
    return 0;
}

相关文章

  • 试题5:句子逆序

    试题描述:将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”所...

  • 问题:句子逆序

    对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将...

  • HWOJ句子逆序

  • 算法(6)句子逆序

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

  • python 句子的逆序

    对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将...

  • 单向链表逆序

    一则面试题:写一个方法,讲一个单向链表逆序。 运行:

  • C入门6:数组入门

    0. 问题 输入5个数字,逆序打印出这5个数字。 输入50个数字,逆序打印出这50个数字。 输入n个数字,逆序打印...

  • LeetCode 面试题51. 数组中的逆序对

    面试题51. 数组中的逆序对 题目来源:https://leetcode-cn.com/problems/shu-...

  • 【华为机试】句子逆序

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

  • 入门算法 - 句子逆序输出

    内容同步于我的博客:https://blog.bigrats.net/archives/basic-alg-sen...

网友评论

    本文标题:试题5:句子逆序

    本文链接:https://www.haomeiwen.com/subject/rqvfhctx.html