思路

这道题比一般的字符串逆序要麻烦一点的地方就在于还需要保持单词的正序可读。

但是英文有个好处就是通过空格断句。因此我们可以利用空格将字符串拆解成字符串数组,然后对数组进行逆序就可以了。

题解

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String str = scanner.nextLine();
            String[] dest = str.split(" ");
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = dest.length - 1; i >= 0; i--) {
                stringBuilder.append(dest[i]).append(" ");
            }
            System.out.println(stringBuilder);
        }
    }
}

C/C++的字符串实际上是一个数组。如果我能准备一个数组,这个数组每次都会将接收键盘的输入插入到头部,然后顺序打印不就可以了?

于是有了这样一段代码:

#include <iostream>

using namespace std;

int main()
{
    string str, res;

    while (cin >> str)
    {
        str += " " + res;
        res = str; //将新输入的单词插入头部
    }
    cout << res << endl;
}