给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
解题思路:遍历数组,遇到空格一律替换为结束符,遇到单词用另一个数组记录首字母位置,最后逆序输出即可。
代码如下:
#include#include using namespace std; int main() { char str[500001] = { 0 }; int index[300001] = { 0 }; int k = 0, flag = 1; cin.getline(str, 500001); int leng = strlen(str); for (int i = 0; i < leng; i++) { if (str[i] != ' ') { if (flag == 1)//表示前一个位置是空格 { index[k++] = i;//记录每一个单词的首字母位置 flag = 0; } } else { str[i] = ' ';//空格全部替换为结束符 flag = 1; } } for (int i = k - 1; i >= 0; i--) { if (i != 0) cout << str + index[i] << " "; else cout << str + index[i]; } return 0; }



