1. 程式人生 > 其它 >1009 說反話(類似迴文字串)

1009 說反話(類似迴文字串)

技術標籤:字串演算法nlppython正則表示式

題目: https://pintia.cn/problem-sets/994805260223102976/problems/994805314941992960                       1009 說反話 (20 分)

給定一句英語,要求你編寫程式,將句中所有單詞的順序顛倒輸出。

輸入格式:

測試輸入包含一個測試用例,在一行內給出總長度不超過 80 的字串。字串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字串,單詞之間用 1 個空格分開,輸入保證句子末尾沒有多餘的空格。

輸出格式:

每個測試用例的輸出佔一行,輸出倒序後的句子。

輸入樣例:

Hello World Here I Come

輸出樣例:

Come I Here World Hello

思路:取自胡凡的《演算法筆記》

 1 #include <stdio.h>
 2 #include <cstring>
 3 int main()
 4 {
 5     char s[266];
 6     gets(s);
 7 
 8     char s2[80][80];
 9     int r = 0, c = 0;
10 
11     int len = strlen(s);
12     for (int i = 0; i <= len; i++)
13     {
14         if (s[i] != ' ')
15             s2[r][c++] = s[i];
16         else
17         {
18             s2[r][c] = '\0';    //給每個單詞後面新增'\0'
19             r++;
20             c = 0;
21         }
22 
23     }
24 
25     //r是最後一個單詞的下標,因為最後一個單詞讀取的時候並沒有使r++;
26 
27     for (int i = r; i >= 0; i--)
28     {
29         printf("%s", s2[i]);
30         if (i != 0)
31             printf(" ");
32         else
33             printf("\n");
34     }
35 
36 
37     return 0;
38 }

法二:

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     char str[80][80];
 6     int i = 0;
 7     while (scanf("%s", str[i]) != EOF)
 8         i++;
 9 
10     for (int j = i - 1; j >= 0; j--)
11     {
12         printf("%s", str[j]);
13         if (j == 0)
14             printf("\n");
15         else
16             printf(" ");
17     }
18 
19     return 0;
20 }