双指针算法-翻转元音字母

public class StringSwap {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "leetcode";
        System.out.println(swapYuanyinString(s2));
    }

    private static String swapYuanyinString(String s) {
        int length = s.length();
        int l = 0;
        int r = length - 1;
        char[] chars = s.toCharArray();
        while (l < r) {
            if (isYuanyinString(chars[l]) && isYuanyinString(chars[r])) {
                swap(chars, l, r);
                l++;
                r--;
            }
            if (!isYuanyinString(chars[l])) {
                l++;
            }
            if (!isYuanyinString(chars[r])) {
                r--;
            }
        }
        return new String(chars);
    }

    private static boolean isYuanyinString(char s) {
        return "aeiouAEIOU".indexOf(s) >= 0;
    }
    
    private static void swap(char[] arr, int l, int r) {
        char c = arr[l];
        arr[l] = arr[r];
        arr[r] = c;
    }
}

 返回:

 

posted @ 2022-05-26 11:38  WPMA  阅读(30)  评论(0)    收藏  举报