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

题目:传送门

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

输入格式:

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

输出格式:

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

输入样例:

Hello World   Here I Come
输出样例:
Come I Here World Hello

感谢杭州电子科技大学李卫明老师修正数据! 感谢浙江工业大学之江学院石洗凡老师修正测试点提示。

思路:只是单词的次序变化,单词里面的字母是没有变化的,还有可能有多个空格的情况!

:用string + 栈操作,用栈的性质。先进后出!

#include<bits/stdc++.h> 
using namespace std;
int main()
{
    stack<string> a;// 定义一个栈 存字符串 
    string temp;
    while(cin>>temp)//  将输入的字符串一字符串的形式存到栈中 
        a.push(temp);//  压栈 
    bool flog = false;
    while(!a.empty())
    {
        if(flog)
            cout<<" ";
        cout<<a.top();
        a.pop();
        flog = true;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/Li-ningning/p/14091408.html