两步法:
1. 先将整个字符数组反转;
2. 再次循环数组,遇到空格反转,遇到最后的位置反转
public class Solution {
public void reverseWords(char[] s) {
//if (s == null || s.length == 0) {
if (s == null || s.length <= 1) {
return;
}
reverseWordsHelper(s, 0, s.length - 1);
int last = 0;
for (int i = 0; i < s.length; i++) {
if (s[i] == ' ') {
reverseWordsHelper(s, last, i - 1);
last = i + 1;
} else if (i == s.length - 1) {
reverseWordsHelper(s, last, i);
}
}
}
private void reverseWordsHelper(char[] s, int left, int right) {
while (left < right) {
char c = s[left];
s[left] = s[right];
s[right] = c;
left++;
right--;
}
}
}