方法1:双指针
时间复杂度:$O(n)$
空间复杂度:$O(n)$ (数组大小)
解题思路
见代码注释。
Java 代码
class Solution {
public String reverseVowels(String s) {
int l = 0, n = s.length(), r = n - 1;
char[] arr = s.toCharArray();
while (l < r) {
while (l < n && !isVowel(arr[l])) {
l ++;
}
while (r > 0 && !isVowel(arr[r])) {
r --;
}
if (l < r) {
char temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
l ++;
r --;
}
}
return new String(arr);
}
private boolean isVowel(char c) {
return "AEIOUaeiou".indexOf(c) != -1;
}
}