单词倒排

GitHub跳转原题关系图返回列表

切分单词列表并整体 reversed,再用单个空格连接输出。

OJ: noi_openjudge

题目 ID: ch0107-28

难度:入门

标签:字符串数组python

日期: 2026-07-30 23:01

题意

将由单个空格分隔的英文单词顺序完全倒排。

思路

split() 得到单词列表,reversed 反向遍历,join 负责重新插入单个空格。

代码

Python代码

python
print(" ".join(reversed(input().split())))

C++代码

cpp
#include <cstdio>
#include <cstring>

char str[5000];
int idx = 0;

char tmp[105];

int flag  = 1;
int next_word(){
    while(1){
        if(str[flag] != ' ' )
            break;
        else {
            printf(" ");
        }
        flag++;
    }

    if( flag == idx+1){
        return -1;
    }

    int cnt = 0;
    while(1) {
        if( str[flag] == ' ' || flag == idx+1){
            tmp[cnt] = '\0';
            return 0;
        }
        else {
            tmp[cnt++] = str[flag];
            flag++;
        }
    }

    return 0;
}

int main(){
    char t;
    while ( scanf("%c",&t)!=EOF) {
        if ( t == '\n' || t == '\r')
            break;
        str[++idx] = t;
    }
    int len  = strlen(str+1);
    int mid = len /2;
    int i;
    for(i=1;i<=mid;i++){
         t = str[i];
         str[i] = str[len-i+1];
         str[len-i+1] = t;
    }


    while(1){
        if( next_word() == -1){
            break;
        }
        int len = strlen(tmp);
        int i;
        for (i=len-1;i>=0;i--){
            printf("%c",tmp[i]);
        }
    }
    return 0;
}

复杂度

时间和输出空间复杂度均为 O(n)O(n)

总结

单词顺序倒排与单词内部字符反转是两种不同操作。