package java_huaweijishi;
import java.util.Scanner;
/**
* 题目描述.将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
* 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
* 接口说明:public String reverse(String sentence);
* @author hexiaoli
* 思路:
* 1)两次反转,第一次将数组从头到尾反转,第二次将单词内部进行反转。
* 2)
*/
public class reverseSentence {
public static String reverse(String str) {
if(str.length() <= 0 || str == null){
return str;
}
if(str.length() == 1){
return str;
}
char[] array = str.toCharArray();
//第一次反转,将“I am a boy”转为“yob a ma I”
swap(array,0,array.length-1);
//单词起始位
int flag = 0;
for (int i = 0; i < array.length; i++) {
//再检测是否碰到空格(假设是第i位),碰到空格就将flag和第i-1位之间用swap进行交换
if (array[i] == ' ') {
swap(array, flag, i-1);
flag=i+1;
}
}
return new String(array);
}
public static void swap(char[] array,int head ,int tail){
while(head < tail){
char temp = array[head];
array[head] = array[tail];
array[tail] = temp;
head++;
tail--;
}
}
public static String reverse2(String str) {
if(str.length() <= 0 || str == null){
return str;
}
if(str.length() == 1){
return str;
}
String[] splitString = str.split(" ");
String result="";
for (int i = splitString.length-1; i >=0 ; i--) {
result+=splitString[i]+" ";
}
return result;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String string=input.nextLine();
System.out.println(reverse(string));
System.out.println(reverse2(string));
}
}