对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将这些部分逆序。
给定一个原字符串A和他的长度,请返回逆序后的字符串。
测试样例:
"dog loves pig",13
返回:"pig loves dog"
import java.util.*;
public class Reverse {
char[] c ;
public String reverseSentence(String A, int n) {
c = A.toCharArray();
reverse(0 , n-1);
int start = 0 ,end = 0;
for(int i = 0 ; i < n ; i++){
if(c[i] == ' '){
end = i - 1;
reverse(start, end);
start = i + 1;
}
}
reverse(end + 2, n - 1);
StringBuffer sBuffer = new StringBuffer();
for(int i = 0 ; i < n ; i++){
sBuffer.append(c[i]);
}
return sBuffer.toString();
}
public void reverse(int start , int end){
for(int i = start ; i < (float)(start + end)/2 ; i++){
//System.out.println("交换位置:"+i+ " "+c[i]+" and 位置:"+ (start + end -i)+ " "+c[start + end - i]);
char temp = c[i];
c[i] = c[start + end - i];
c[start + end - i] = temp;
}
}
}