描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
数据范围:输入的字符串长度满足 1 \le n \le 1000 \1≤n≤1000
注意本题有多组输入
输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:
得到逆序的句子
示例1
输入:
I am a boy
输出:
boy a am I
示例2
输入:
nowcoder
输出:
nowcoder
思路:
先讲整体反转,然后再将单词逐个反转即可,如下图。

题解:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main() {
string s, temp;
while (cin >> temp) //输入字符串
s += " " + temp;
int n = s.length();
reverse(s.begin(), s.end()); //第一次整体反转
for (int i = 0; i < n; i++) {
int j = i;
while (j < n && s[j] != ' ') //以空格为界找到一个单词
j++;
reverse(s.begin() + i, s.begin() + j); //将这个单词反转
i = j;
}
cout << s << endl;
return 0;
}