public String reverseVowels(String s) {
        if (s == null) return null;

        char[] str = s.toCharArray();
        int i = 0, j = str.length - 1;
        while (i < j) {
            while (i < j && !isVowel(str[i])) ++i;
            while (i < j && !isVowel(str[j])) --j;
            swap(str, i++, j--);
        }
        return new String(str);
    }