句子逆序

题目描述

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


接口说明

/**
 * 反转句子
 * 
 * @param sentence 原句子
 * @return 反转后的句子
 */
public String reverse(String sentence);


输入描述:

将一个英文语句以单词为单位逆序排放。



输出描述:

得到逆序的句子


输入例子:
I am a boy

输出例子:
boy a am I



思路1:按行接收输入的字符串,使用split分割字符串,得到字符串数组,然后逆序输出,要加空格,注意最后是没有空格的,可以在输出时使用String的trim方法去掉前导和后导的空格

代码:
 1 import java.util.Scanner;
 2 
 3 /**
 4  * 句子逆序
 5  * @author zbt
 6  *
 7  */
 8 public class Test7 {
 9 
10     public static void main(String[] args) {
11         Scanner sc = new Scanner(System.in);
12         String s = sc.nextLine();
13         System.out.println(new Test7().reverse(s).trim());//最后多加了一个空格符,使用trim可以忽略前导空白和后导空白
14         sc.close();
15     }
16 
17     public String reverse(String sentence) {
18         String[] s1 = sentence.split(" ");
19         StringBuffer sb = new StringBuffer();
20         for (int i = s1.length - 1; i >= 0; i--) {
21             sb.append(s1[i] + " ");
22         }
23         System.out.println(sb.length());
24         return sb.toString();
25     }
26 
27 }

思路2:参考网友,中间使用Collections翻转,价值并不大;参考其使用的java方法

代码:

 1 import java.util.Scanner;
 2  
 3 public class Test8 {
 4     public static void main(String[] args) {
 5         Scanner sc = new Scanner(System.in);
 6         String sentence = sc.nextLine();
 7         String[] word = sentence.split(" ");
 8         StringBuilder sb = new StringBuilder();
 9         for (int i = word.length - 1; i > 0; i--) {
10             sb.append(word[i]);
11             sb.append(" ");
12         }
13         sb.append(word[0]);
14         System.out.print(sb);
15     }
16 }
原文地址:https://www.cnblogs.com/crazybuddy/p/5328354.html