题目
解题思路
解题代码
import java.util.*;
public class Main{
//定义翻转字符数组的方法
public static void reverse(char[] arr,int start,int end){
while(start < end){
char tmp = arr[start];
arr[start] = arr[end];
arr[end] = tmp;
start++;
end--;
}
}
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
//先转换成字符数组
char[] arr = str.toCharArray();
//先整体倒置
reverse(arr,0,arr.length - 1);
//从 0 下标开始
int i = 0;
//遍历字符数组的结束标志
while(i < arr.length){
int j = i;
//j < arr.length 防止越界,整体表示遇见空格之前表示一个单词
while(j < arr.length && arr[j] != ' '){
j++;
}
//j后面还有单词
if(j < arr.length){
//倒置这部分的单词
reverse(arr,i,j - 1);
//让i从下一个单词下标开始
i = j + 1;
//说明j到这个数组最后了
}else{
//倒置最后的单词
reverse(arr,i,j - 1);
//让i等于j 即是数组的长度,跳出循环
i = j;
}
}
//让字符数组转换成字符串,因为最后输出的是字符串
String res = new String(arr);
System.out.println(res);
}
}