给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
/思路:首先找出字符串开头的位置(有可能开头有空格),然后从字符串的尾部开始遍历字符串,当第一次遇到一个空格(可能会遇到两个连续的空格),则输出从这个空格到上一个空格中间的字符串/
实现代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
char s[500000];
int i,j,k,cot=0;
scanf("%[^\n]",&s);
int len=strlen(s);
for(i=0;i<len;i++)
if(s[i]!=' ')
{
k=i;
break;//找到开头的位置后停止遍历
}
for(i=len-1;i>k-1;i--)
{
if(s[i]!=' ') cot++;//记录两个空格之间的字符个数
else if(s[i]==' '&&cot!=0)//排除掉连续出现两次空格的情况
{
for(j=i+1;j<i+1+cot;j++)
printf("%c",s[j]);
printf(" ");//输出一个空格
cot=0;
}
if(i==k)
for(j=k;j<k+cot;j++)
printf("%c",s[j]);
}
return 0;
}
来源:CSDN
作者:嗨I,你Y
链接:https://blog.csdn.net/Ohh_ckx/article/details/104577546