1class Solution {2public String reverseVowels(String s) {3Set<Character> set = new HashSet<>();4set.add('a');5set.add('e');6set.add('i');7set.add('o');8set.add('u');9set.add('A');10set.add('E');11set.add('I');12set.add('O');13set.add('U');1415StringBuilder str = new StringBuilder(s);16int left = 0, right = str.length() - 1;17while (left < right) {18if (!set.contains(str.charAt(left))) {19left++;20}21if (!set.contains(str.charAt(right))) {22right--;23}24if (set.contains(str.charAt(left)) && set.contains(s.charAt(right))) {25char temp = str.charAt(left);26str.setCharAt(left++, str.charAt(right));27str.setCharAt(right--, temp);28}29}30return str.toString();31}32}