问题描述:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
思路:对于这种问题,可以通过两次反转字符串来实现,第一部翻转句子中所有的字符,第二步翻转每个单词中字符的顺序。关键是如何实现翻转单词的函数。
public class Solution {
public String ReverseSentence(String str) {
String result = "";
if(str == null || str.length()==0){
return result;
}
char[] array = str.toCharArray();
int begin = 0;
int end = array.length-1;
reverse(array,begin,end);
begin = end = 0;
while(begin != array.length){
if(array[begin] == ' '){
begin++;
end++;
}else if(end == array.length || array[end] == ' '){
reverse(array,begin,--end);
begin = ++end;
}else{
end++;
}
}
result = String.valueOf(array);
return result;
}
public void reverse(char[] array,int begin,int end){
if(array == null || array.length == 0){
return;
}
while(begin < end){
char temp = array[begin];
array[begin] = array[end];
array[end] = temp;
begin++;
end--;
}
}
}