comefrom: <awangdev>345. Reverse Vowels of a String_1.java
code: 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();
      }
masked: 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 ( ) ;
  }
  