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.......