对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将这些部分逆序。
给定一个原字符串A和他的长度,请返回逆序后的字符串。
解题思路:把字符串A 整体逆序,在遇到空格之时然后再次逆序。
public String reverseSentence(String A, int n) {
// write code here
if(n==0||null==A) return A;
char[] as=A.toCharArray();
reverseWord(as);
return String.valueOf(as);
}
public void reverseWord(char[] chas){
if (null==chas ||chas.length==0) return;
reverse(chas,0,chas.length-1);
int l=-1;
int r=-1;
for(int i=0;i<chas.length;i++){
if(chas[i]!=' '){
l=i==0||chas[i-1]==' '?i:l;
r=i==chas.length-1||chas[i+1]==' '?i:r;
}
if (l != -1 && r != -1) {
reverse(chas, l, r);
l = -1;
r = -1;
}
}
}
public void reverse(char[] as,int start,int end){
char temp=0;
while(start<end){
temp=as[start];
as[start]=as[end];
as[end]=temp;
start++;
end--;
}
}