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++有現成的棧函數,可以直接用。