牛客網在線編程:句子反轉
阿新 • • 發佈:2018-03-16
[] 空格 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 }
牛客網在線編程:句子反轉