张明云的知识共享 2018-03-16
题目描述:
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (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,去除最后一位的空格
import java.util.*; public class Juzifanzhuan { public static void main(String[] args) { // TODO Auto-generated method stub // Scanner sc = new Scanner(System.in); // StringBuffer sb = new StringBuffer(); // String s = "" ; // while(sc.hasNext()){ // s = sc.nextLine(); // String[] string = s.split(" "); // int len = string.length; // for(int i = len-1; i > 0;i--){ // sb.append(string[i]); // sb.append(" "); // } // sb.append(string[0]); // System.out.println(sb.toString()); // } Scanner sc = new Scanner(System.in); Stack<String> stack = new Stack<>(); StringBuffer sb = new StringBuffer(); while(sc.hasNext()){ String s = sc.nextLine(); String[] strings = s.split(" "); for(int i = 0; i < strings.length;i++){ stack.push(strings[i]); } while(!stack.isEmpty()){ sb.append(stack.pop()); sb.append(" "); } sb.delete(sb.length()-1,sb.length()); System.out.println(sb.toString()); } } }