给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
string a[260000]={""}; //初始化一个空的字符串类型的数组模拟栈
int i=0;
char ch;
ch=getchar(); //用ch接收输入进来的单个字符
while(ch!='\n') //直到输入为回车结束
{
if(ch!=' ') //不是空格就连接到字符串后,否者开启新的字符串(新的单词位置)
{
a[i]+=ch;
}
else
{
i++; //当输入的是空格时,i++,开启新的字符串(连续的空格会导致有的字符串 为空)
}
ch=getchar(); //连续输入
}
while(a[i].empty())i--; //消除从栈顶的开始直到有数据位置的空单词
for(;i>=0;i--) //出栈输出
{
if(!a[i].empty())
{
cout<<a[i];
}
if(!a[i-1].empty())cout<<" "; //如果下面还有非空字符串才输出空格(隔开相邻单词)
}
}