描述
        将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符

输入描述: 输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述: 得到逆序的句子

示例1
输入: I am a boy
输出: boy a am I

方法一:反向逐个输出单词(C++)
核心思想:
        首先将单词保存到容器中,然后反向输出容器中的单词

图解: alt

核心代码:

#include<iostream>
#include<string>
#include<vector>
using namespace std;

void reverse_word(vector<string> words){
    int i,n = words.size();
    for(i=n-1;i>=0;i--)
        cout<<words[i]<<" ";
}

int main(){
    string word;
    vector<string> words;
    while(cin>>word)
        words.push_back(word);
    reverse_word(words);
    return 0;
}

时间复杂度O(n)
空间复杂度O(n)


方法二:缓冲区接收数据并分割单词反向输出(java)
核心思想:
        控制台向输入缓冲区输入数据,根据空格分割输入单词,然后反向输出单词来达到句子逆置的效果

核心代码:

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine();
        String[] words = line.split(" ");
        for(int i=words.length-1;i>=0;i--)
            System.out.print(words[i]+" ");
    }
}

时间复杂度O(n)
空间复杂度O(n)