Reverse Words in a String
//classic question to practice string
class Solution {
public String reverseWords(String s) {
char[] array = s.toCharArray();
reverse(array, 0, array.length - 1);
reverseWords(array);
return trimSpaces(array);
}
private void reverse(char[] array, int i, int j) {
while (i < j) {
char temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
}
private void reverseWords(char[] array) {
int i = 0;
int j = 0;
int len = array.length;
while (i < len) {
while (i < j || (i < len && array[i] == ' ')) {
i++;
}
while (j < i || (j < len && array[j] != ' ')) {
j++;
}
reverse(array, i, j - 1);
}
}
private String trimSpaces(char[] array) {
int i = 0;
int j = 0;
int len = array.length;
while (j < len) {
while (j < len && array[j] == ' ') {
j++;
}
while (j < len && array[j] != ' ') {
array[i++] = array[j++];
}
while (j < len && array[j] == ' ') {
j++;
}
if (j < len) {
array[i++] = ' ';
}
}
return new String(array).substring(0, i);
}
}
最后更新于
这有帮助吗?