天天看點

7-32 說反話-加強版 (20分)

7-32 說反話-加強版 (20分)

給定一句英語,要求你編寫程式,将句中所有單詞的順序颠倒輸出。

輸入格式:

測試輸入包含一個測試用例,在一行内給出總長度不超過500 000的字元串。字元串由若幹單詞和若幹空格組成,其中單詞是由英文字母(大小寫有區分)組成的字元串,單詞之間用若幹個空格分開。

輸出格式:

每個測試用例的輸出占一行,輸出倒序後的句子,并且保證單詞間隻有1個空格。

輸入樣例:

Hello World Here I Come

輸出樣例:

Come I Here World Hello

#include<bits/stdc++.h>
#include<stdio.h>
#include<string>

using namespace std;

int main ()
{
    string s;
    bool flag=false;
    stack<string> variable;//定義一個棧
    while(cin>>s)//循環輸入遇到ctrl+z結束輸入
    {
        variable.push(s);//将元素入棧
    }
    while(!variable.empty())//判斷棧是否為空
    {
        if(flag)//判斷是否輸出空格(第一次循環沒輸出空格,其餘都輸出了空格)
        {
            cout<<" ";
        }
        cout<<variable.top();//取棧頂元素輸入
        variable.pop();//将棧頂元素出棧
        flag=true;
    }
    return 0;
}
           

思路:我在題目中用到了棧的先進後出的原理,剛好可以實作題目中的倒序輸出。大家如果用的是C語言也可以自己來實作棧,不過c++有現成的棧函數,可以直接用。