題目描述
將一個英文語句以單詞爲單位逆序排放。例如「I am a boy」,逆序排放後爲「boy a am I」
全部單詞之間用一個空格隔開,語句中除了英文字母外,再也不包含其餘字符
輸入描述
將一個英文語句以單詞爲單位逆序排放。
輸出描述
獲得逆序的句子
輸入例子
I am a boy
輸出例子
boy a am I
算法實現
import java.util.Scanner;
/**
* 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) {
// 找從i位置開始後的第一個非空白字符
while (i < chars.length && chars[i] ==' ' ) {
i++;
}
j = i + 1;
// 找i位置以後的第一個空白字符
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--;
}
}
}