7-32 說反話-加強版
阿新 • • 發佈:2019-02-10
給定一句英語,要求你編寫程式,將句中所有單詞的順序顛倒輸出。
輸入格式:
測試輸入包含一個測試用例,在一行內給出總長度不超過500 000的字串。字串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字串,單詞之間用若干個空格分開。
輸出格式:
每個測試用例的輸出佔一行,輸出倒序後的句子,並且保證單詞間只有1個空格。
輸入樣例:
Hello World Here I Come
輸出樣例:
Come I Here World Hello
這個題通過率蠻低的,基本思路是不難的,不過是逆序輸出。但是需要注意一些特殊情況,比如單詞之間多個空格,開頭有空格,結尾有空格等等。程式碼如下:
#include<iostream> #include<string> #include<cstring> using namespace std; int main(){ char str[500001]; int length, i, j, mark, flag; cin.getline(str, 500001); length = strlen(str); mark = length - 1; for(i = length - 1; i >= 0; i--){ if(str[i] == ' ' && str[i + 1] != ' '){ flag = 0; for(j = i + 1; j <= mark; j++) cout << str[j]; //判斷是不是最後一個單詞 for(j = i; j >= 0; j--){ if(str[j] != ' '){ flag = 1; break; } } if(flag && i != length - 1) cout << ' '; }else if(str[i] != ' ' && str[i + 1] == ' ') mark = i; if(i == 0 && str[0] != ' '){ for(j = 0; j <= mark; j++) cout << str[j]; } } }