<awangdev>345. Reverse Vowels of a String_1.java
public String reverseVowels(String s) {
        if (s == null || s.length() == 0) {
            return s;
        }
        List<Character> vowels = Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U');
        StringBuffer sb = new StringBuffer(s);
        
        int maxIndex = sb.length() - 1;
        int i = 0;
        int j = maxIndex;
        while (i < j) {
            while (i < maxIndex && !vowels.contains(sb.charAt(i))) i++;
            while (j > 0 && !vowels.contains(sb.charAt(j))) j--;
            
            if (i < j && vowels.contains(sb.charAt(i)) && vowels.contains(sb.charAt(j))) {
                char letter = sb.charAt(j);
                sb.setCharAt(j, sb.charAt(i));
                sb.setCharAt(i, letter);
                j--;
                i++;
            }
        }
        return sb.toString();
    }
public String var_0 ( String var_2 ) {
  if ( var_2 == null || var_2 . length ( ) == 0 ) {
    return var_2 ;
  }
  List < Character > var_20 = Arrays . asList ( 'a' , 'e' , 'i' , 'o' , 'u' , 'A' , 'E' , 'I' , 'O' , 'U' ) ;
  StringBuffer var_22 = new StringBuffer ( var_2 ) ;
  int var_24 = var_22 . length ( ) - 1 ;
  int var_25 = 0 ;
  int var_26 = var_24 ;
  while ( var_25 < var_26 ) {
    while ( var_25 < var_24 && ! var_20 . contains ( var_22 . charAt ( var_25 ) ) ) var_25 ++ ;
    while ( var_26 > 0 && ! var_20 . contains ( var_22 . charAt ( var_26 ) ) ) var_26 -- ;
    if ( var_25 < var_26 && var_20 . contains ( var_22 . charAt ( var_25 ) ) && var_20 . contains ( var_22 . charAt ( var_26 ) ) ) {
      char var_29 = var_22 . charAt ( var_26 ) ;
      var_22 . setCharAt ( var_26 , var_22 . charAt ( var_25 ) ) ;
      var_22 . setCharAt ( var_25 , var_29 ) ;
      var_26 -- ;
      var_25 ++ ;
    }
  }
  return var_22 . toString ( ) ;
}
