代码:
public String reverseWords(String s) {
//这个题目是以每个空格来分隔一个单元,只对这个单元做反转
//因此要先将字符串转为字符数组
char[] chars = s.toCharArray();
//然后双指针遍历,第一个指针是当前单词第一个字母,第二个指针是当前单词最后一个字母
int left = 0;
int right = 0;
while (right <= chars.length - 1) {
//注意一个地方,如果是最后一个单词,是没有下一个空格的
if (right == chars.length - 1) {
reverseString(chars, left, right);
}
if (chars[right] != ' ') {
right++;
} else {
reverseString(chars, left, right - 1);
//现在应该跳到下一个单词
left = right + 1;
right++;
}
}
String value = String.valueOf(chars);
return value;
}
public void reverseString(char[] s, int left, int right) {
//采用双指针,一个从前向后,一个从后向前
while (left <= right) {
char temp = s[left];
s[left] = s[right];
s[right] = temp;
right--;
left++;
}
}