1. 程式人生 > >牛客網在線編程:句子反轉

牛客網在線編程:句子反轉

[] 空格 public lin class 末尾 length system scanner

題目描述:

給定一個句子(只包含字母和空格), 將句子中的單詞位置反轉,單詞用空格分割, 單詞之間只有一個空格,前後沒有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”
輸入描述:
輸入數據有多組,每組占一行,包含一個句子(句子長度小於1000個字符)
輸出描述:
對於每個測試示例,要求輸出句子中單詞反轉後形成的句子
示例1
輸入

hello xiao mi
輸出

mi xiao hello

思路:
以split(" ")為分隔,將string轉為string[]存儲,計算string[]的長度,使用stringbuffer從尾到頭append即可
輸出時,因為尾部沒有空格,所以先append後len-1位+" ",再append第一位。保證末尾沒有空格
使用棧存儲也可以 但輸出存儲還是要使用stringBuffer,去除最後一位的空格

 1 import java.util.*;
 2 public class Juzifanzhuan {
 3 
 4     public static void main(String[] args) {
 5         // TODO Auto-generated method stub
 6 //        Scanner sc = new Scanner(System.in);
 7 //        StringBuffer sb = new StringBuffer();
 8 //        String s = "" ;
 9 //        while(sc.hasNext()){
10 // s = sc.nextLine(); 11 // String[] string = s.split(" "); 12 // int len = string.length; 13 // for(int i = len-1; i > 0;i--){ 14 // sb.append(string[i]); 15 // sb.append(" "); 16 // } 17 // sb.append(string[0]); 18
// System.out.println(sb.toString()); 19 // } 20 Scanner sc = new Scanner(System.in); 21 Stack<String> stack = new Stack<>(); 22 StringBuffer sb = new StringBuffer(); 23 while(sc.hasNext()){ 24 String s = sc.nextLine(); 25 String[] strings = s.split(" "); 26 for(int i = 0; i < strings.length;i++){ 27 stack.push(strings[i]); 28 } 29 while(!stack.isEmpty()){ 30 sb.append(stack.pop()); 31 sb.append(" "); 32 } 33 sb.delete(sb.length()-1,sb.length()); 34 System.out.println(sb.toString()); 35 } 36 } 37 38 }

牛客網在線編程:句子反轉