输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
将读入的字符串首尾分别插入一个空格,这样就可以做到,所有的单词都在找两个空格之间,然后从左往右扫,扫到一个空格就把到下一个空格之间的所有字符用一个数组存储,最后直接输出即可。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s1;
char s2[81];
char s3[81];
getline(cin,s1);
s2[0] = ' '; //给首位添加空格
int k = 1;
for(int i = s1.length()-1 ; i >= 0 ; i--)
{
s2[k] = s1[i];
k++;
}
s2[k] = ' '; //给末尾添加空格
int count = 0;
k = 0;
int m;
for(int i = 0 ; i < strlen(s2) ; i++)
{
if(s2[i] == ' ' && count == 0)
m = i;
if(s2[i] == ' ')
count++;
if(count == 2 && s2[i] == ' ')
{
for(int j = i-1 ; j >= m ; j--) //将两个空格间的字符转置存储到新的数组中
{
s3[k] = s2[j];
k++;
}
count = 0;
i--;
}
}
for(int i = 0 ; i < k-1 ; i++) //直接输出即可
{
cout << s3[i];
}
return 0;
}
提交截图:
这里推荐另一种方法,Python大法NB,下面直接贴上代码:
(ps:Python虽然简单,但容易超时,内存容易超限,比较两次的提交截图就明白了,因此在比较复杂的问题上尽量还是少用Python)
n=input().split() //读入一个字符串
n.reverse() //reverse倒置,python里的reverse函数是根据单词倒置的,并不是像C++直接将整个字符串倒置
print(' '.join(n)) //join函数用于在每个单词间插入字符,' '.join(n)表示在每个单词间插入空格然后输出
Python提交截图: