问题描述:把一个句子中的单词进行反转,反转之前:“how are you”,反转之后:“you are how”。
具体步骤:
(1)先将整个字符串反转,反转后为:“uoy era woh”。
(2)再将每个单词反转过来,反转后为:“you are how”。
- 首先编写一个反转数组元素的方法swap()。
public void swap(char array[] ,int front,int end) { //对数组中的元素进行倒转
while(front<end) {
char tmp = array[end];
array[end] = array[front];
array[front] = tmp;
front++;
end--;
}
}
- 再编写swapWords()方法,先将字符串分割成单个字符的数组,然后反转整个字符数组,最后再逐个反转每个单词数组。
public String swapWords(String s) {
//把字符串分割成单个字符的数组
char array[] = s.toCharArray();
//调用swap方法对整体进行字符串反转
swap(array, 0 , array.length-1);
//记录u敌后一组字符数组的开始位置
int begin = 0;
//对每个单词进行字符串反转操作
for(int i = 1; i<array.length; i++) {
if(array[i] == ' ') {
swap(array,begin,i-1);
begin = i+1; //空格的最后一位
}
}
//对剩下的最后一组进行反转
swap(array,begin,array.length-1);
return new String(array);
}
- 测试:
public static void main(String[] args) {
String str = "how are you";
System.out.println("字符串反转前:"+str);
System.out.println("字符串反转后:"+new string().swapWords(str));
}
- 运行截图: