对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将这些部分逆序。
给定一个原字符串A和他的长度,请返回逆序后的字符串。
测试样例:
“dog loves pig”,13
返回:”pig loves dog”
编程思路:由于是对每个单词进行逆序 所以只需改进一下字符串逆序的方法(进行两次逆序,第一次在每个单词内部,第二次在整个字符串之间)即可。
import java.util.*;
public class Reverse {
public String reverseSentence(String A, int n) {
// write code here
String[] str = A.split(" ");
StringBuffer sb = new StringBuffer();
for(int i=0;i<str.length;i++){
for(int j=0;j<str[i].length()/2;j++){
str[i] = change(str[i].toCharArray(),j); //单词间逆序
}
sb.append(str[i]);
if(i!=str.length)
sb.append(" ");
}
String res = sb.toString();
for(int j=0;j<=n/2;j++){
res = change(res.toCharArray(),j); 整字符串逆序
}
return res.substring(1,res.length());
}
private static String change(char[] st, int j) {
// 字符串逆序
char tem = st[j];
st[j] = st[st.length-j-1];
st[st.length-j-1] = tem;
return String.valueOf(st);
}
}