尊重原创 转载注明
一:题干:
7-25 说反话-加强版 (20分)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
二:分析:
最后一个测试点很难用二维数组 所以用一维数组 想法很简单 从后循环判断空格 然后输出空格后的单词 注意多个空格省略为一个空格 开头空格和结尾空格省略*
三:代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
string a;
getline(cin,a);
int n=a.size();
int i=0,t=0;//t控制输出空格 最后一个字母后不输出空格
for(i=n-1; i>=0; i--) {
if(a[i]!=' ') {
int len=i;
while(len>0&&a[len-1]!=' ')len--;//从后判断空格
if(t)cout<<' ';
cout<<a.substr(len,i-len+1);//输出单词
t=1;
i=len;
} }
return 0;
}