一、题目描述
二、思路
将字符串转换为char类型的数组,遍历数组,在数组的起始位置定义一个索引,遇到空字符就对前面的单词进行反转,然后更新索引,从空字符的下一个位置开始,继续遍历,知道遇到空字符或结尾,最后用String的构造方法,将char数组转成结果返回
三、代码实现
class Solution {
public String reverseWords(String s) {\
//将字符串转化为char数组
char[] arr = s.toCharArray();
//起始索引
int start = 0;
for (int i = 0; i <arr.length; i++) {
//遍历到字符为空,对空字符前的一个单词进行反转交换
if (arr[i] == ' '){
reverse(arr,start,i-1);
//反转后更新索引
start = i + 1;
continue;
}
//遍历到数组的最后一个字符时,对最后一个单词进行反转
if (i == arr.length -1){
reverse(arr,start,i);
}
}
return new String(arr);
}
//对单词反转
public void reverse(char[] arr,int l,int r){
while (l < r){
char temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
l++;
r--;
}
}
}