题目描述
将一个英文语句以单词为单位逆序排放。例如“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 }