【正确答案】
【答案解析】问题描述:把一个句子中的单词进行反转,例如,“how are you”,进行反转后为“you are how”。
这道题的解决方法比较简单,只需要进行两次字符反转的操作即可,第一次对整个字符串中的字符进行反转,反转结果为:“uoy era woh”,通过这一次的反转已经实现了单词顺序的反转,只不过每个单词中字符的顺序反了,接下来只需要对每个单词进行字符反转即可得到想要的结果:“you are how”。实现代码如下:
public class Test{
public void swap(char[]cArr, int front, int end){
while(front<end){
char tmp=cArr[end];
cArr[end]=cArr[front];
cArr[front]=tmp;
front++;
end--;
}
}
public String swapWords(String s){
char[]cArr=s.toCharArray();
//对整个字符串进行字符反转操作
swap(cArr, 0, cArr.length-1);
int begin=0;
//对每个单词进行字符反转操作
for(int i=1; i<cArr.length; i++){
if(cArr[i]=="){
swap(cArr, begin, i-1);
begin=i+1;
}
}
swap(cArr, begin, cArr.length-1);
return new String(cArr);
}
public static void main(String[]args){
String str="how are you";
System.out.println(new Test().swapWords(str));
}
}
程序运行结果为:
you are how
当然,在Java语言中,许多内置的类库可以使字符反转操作更加简单,有兴趣的读者可以自己研究一下。