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);
    }
}

最后更新于

这有帮助吗?