classSolution:defreverseVowels(self, s):
s, vowels = list(s), {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}
indices = [i for i, c in enumerate(s) if c in vowels]
for k in range(len(indices)//2):
i, j = indices[k], indices[~k]
s[i], s[j] = s[j], s[i]
return''.join(s)
java
privatefinalstatic HashSet<Character> vowels = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
public String reverseVowels(String s) {
int i = 0, j = s.length() - 1;
char[] result = newchar[s.length()];
while (i <= j) {
char ci = s.charAt(i);
char cj = s.charAt(j);
if (!vowels.contains(ci)) {
result[i++] = ci;
} elseif (!vowels.contains(cj)) {
result[j--] = cj;
} else {
result[i++] = cj;
result[j--] = ci;
}
}
returnnew String(result);
}