剑指offer58 反转字符串 Java

public class ReverseString58_ {
    public static void main(String[] args) {
        String str = "i   am a     student!";
        System.out.println(reverseString(str));
    }

    private static String reverseString(String str) {
        char[] arr = str.toCharArray();
        int length = arr.length;
        //i指向每个空格后的第一个字符,j指向空格或者最后一个字符的后一个
        int i = 0, j = 0;
        while (j <= length) {
            if (j == length || arr[j] == ' ') {
                reverse(arr, i, j-1);
                i = j + 1;
            }
            j++;
        }
        reverse(arr, 0, arr.length - 1);
        return new String(arr);
    }

    public static void reverse(char[] arr, int i, int j) {
        while (i < j) {
            swap(arr, i++, j--);
        }
    }

    private static void swap(char[] arr, int i, int j) {
        char temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43065507/article/details/99335282