题目描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
输入描述
将一个英文语句以单词为单位逆序排放。
输出描述
得到逆序的句子
输入例子
I am a boy
输出例子
boy a am I
算法实现
import java.util.Scanner;
/**
* Author: 王俊超
* Date: 2015/12/22 13:45
* All Rights Reserved !!!
*/
public class Main {
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String input = scanner.nextLine();
System.out.println(reverseSentence(input));
}
scanner.close();
}
private static String reverseSentence (String str) {
char [] chars = str.toCharArray();
reverse(chars, 0 , chars.length - 1 );
for (int i = 0 , j; i < chars.length; i = j + 1 ) {
while (i < chars.length && chars[i] ==' ' ) {
i++;
}
j = i + 1 ;
while (j < chars.length && chars[j] != ' ' ) {
j++;
}
reverse(chars, i, j - 1 );
}
return new String(chars);
}
/**
* 字符数组翻转
* @param str
* @param start
* @param end
*/
private static void reverse (char [] str, int start, int end) {
char tmp;
while (start < end) {
tmp = str[start];
str[start] = str[end];
str[end] = tmp;
start++;
end--;
}
}
}