給定一句英語,要求你編寫程式,将句中所有單詞的順序颠倒輸出。
輸入格式:
測試輸入包含一個測試用例,在一行内給出總長度不超過500 000的字元串。字元串由若幹單詞和若幹空格組成,其中單詞是由英文字母(大小寫有區分)組成的字元串,單詞之間用若幹個空格分開。
輸出格式:
每個測試用例的輸出占一行,輸出倒序後的句子,并且保證單詞間隻有1個空格。
輸入樣例:
Hello World Here I Come
結尾無空行
輸出樣例:
Come I Here World Hello
結尾無空行
- 送出結果:
- 源碼:
#include<stdio.h>
#include<string.h>
int main()
{
char word[500001];
int tail = -1, head = -1; // tail和head一前一後确定每個單詞
int isPrintBlank = 1; // isPrintBlank判斷是否需要輸出空格
gets(word);
for (int i = strlen(word) - 1; i >= 0; i--) // 倒序依次輸出每個單詞
{
if (word[i] != ' ' && tail < 0) // 單詞尾
{
tail = i;
}
if ((word[i] != ' ' && word[i - 1] == ' ') || (i == 0) && tail >= 0) // 單詞頭
{
head = i;
}
if (head >= 0 && tail >= 0) // 輸出目前單詞
{
if (isPrintBlank != 1)
{
putchar(' ');
}
for (head; head <= tail; head++)
{
printf("%c", word[head]);
}
isPrintBlank = 0;
tail = -1;
head = -1;
}
}
return 0;
}