图解算法——句子逆序

1、题目描述

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

题目来源:
https://www.nowcoder.com/practice/48b3cb4e3c694d9da5526e6255bb73c3?tpId=37&tags=&title=&difficulty=0&judgeStatus=0&rp=1

2、示例

输入描述:

输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。

输出描述:

得到逆序的句子。

示例1

输入:I am a boy

输出:boy a am I

3、解题思路

根据前两篇的文章,想要求到最快的方法,应该是字节读取。但那是一个单词或者一个数字,长度比较短,而这里是句子,长度较长。

我们想,一个英文句子里,除了有单词,还有什么?当然是空格呀。

故:我们可以先读取到目标句子,然后根据空格来隔开,获得一个字符串数组,这样数组里每个节点里都是一个单词。

然后我们逆序输出,并手动加空格,然后最后一个输出要手动输出,因为最后一个单词后没有空格。

代码如下:

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
            String str = sc.nextLine();
            String[] res = str.split(" ");
            for(int i = res.length-1; i>0; i--){
                System.out.print(res[i]+" ");
            }
            System.out.println(res[0]);
        }
    }
}

查看提交速度如何:

 我想着可能还会有更好地办法,我查了下思路基本都差不多,但是纳闷了,内存如何才能更小呢?欢迎各位大佬提出宝贵建议,谢谢~~

Over.......

原文地址:https://www.cnblogs.com/gjmhome/p/15072574.html