输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
#include
#include
int main()
{
char str[500000],words[500][5000];
gets(str);
int i, lenth, word = -1, start, j,h,end=0;
lenth = strlen(str);
for (i = 0; i < lenth;i++){
if((str[i]==' '&&str[i+1]!=' '&&i!=lenth-1)||(str[i]!=' '&&i==0)){
word++;
if(i!=lenth-1&&i!=0){
start=i+1;
}
else if(i==0){
start=0;
}
}
else if(((str[i]!=' ')&&(str[i+1]==' ')&&(i!=lenth-1))||(i==lenth-1&&str[i]!=' ')){
if(word==-1)end=0;
else{
end=i;
for(j=start,h=0;j1;j++,h++)
words[word][h]=str[j];
end=0;
}
}
}
for (i = word; i >= 0;i--){
if(i!=0)
printf("%s ", words[i]);
else
printf("%s",words[i]);
}
return 0;
}
将
char str[500000],words[500][5000];
挪到main前面
万一是250000个"a "呢?
char str[500001],*words[250000];//没必要保存250000个单词,先保存指向250000个单词开头的指针,输出时到空格或0结束