题目描述:
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (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 }