/***
第一次翻转:整个字符串逆序“ .tneduts a ma i” ,去掉前面开头空格,拼接一个“ ”;得到“.tneduts a ma i ”;
第二次翻转:对每一个单词翻转:
**/
class Solution {
public String reverseWords(String s) {
//1.第一次翻转
//2.
//
if(s==null ){
return null;
}
if(s.length()==0){
return “”;
}
String str=s.trim();//去除尾部空格
// System.out.println(str);
//转为字符数组
char[] arr= str.toCharArray();
reverse(arr,0,arr.length-1);
// System.out.println(arr);
//对单词翻转
int len =arr.length;
int index=0;//查找空格
int start=0;
int end=0;
while(index<len-1){
while(index<len&& arr[index]!=' '){//遍历每个单词分割
index++;
}
end=index-1;
reverse(arr,start,end);
index++;
start=index;//下次开始位置
}
return new String(arr);
}
//字符数组 元素逆序
private void reverse(char[] arr,int start,int end){
int mid= (start+end+1)/2;
// System.out.println(mid);
for(int i=0;start+i<mid;i++){
char temp =arr[start+i];
arr[start+i]=arr[end-i];
arr[end-i]=temp;
}
}
}