欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

7-32 说反话-加强版 (20 分)

程序员文章站 2024-02-18 08:35:35
...

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。

输入样例:

Hello World   Here I Come

输出样例:

Come I Here World Hello

本人新手,做了整整一个晚上,终于终于终于终于 终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于终于做出来了;

#include <bits/stdc++.h>

using namespace std;
char a[500000];
int main(){
    string s;
    getline(cin,s);
    bool flg = false;
    int j = 0;
    for(int i = 0; i < s.size(); i++){
        if(s[i] == ' ' && s[i+1] == ' ' || s[i] == ' ' && !flg) continue;
        else {
            a[j++] = s[i];
            flg = true;
        }
    }
    if(a[j-1] != ' ')a[j++] = ' ';
    int k = 0;
    for(j -= 2; j >= 0; j--){
        if(a[j] == ' '){
            for(int m = 1; m <= k+1; m++){
                cout << a[j+m];
            }
            k=0;
        }
        else k++;
    }
    for(int n = 0; n < k; n++){
        cout << a[n];
    }
    cout << endl;
    return 0;
}