Reverse Vowels of a String
Write a function that takes a string as input and reverse only the vowels of a string.
时间复杂度:O(n)
空间复杂度:O(n)
逻辑类似于快排
public String reverseVowels(String s) {
int length = s.length();
if(length <= 1)
return s;
Set<Character> set = new HashSet<>();
char[] charArray = s.toCharArray();
set.addAll(Arrays.asList('a','e','i','o','u','A','E','I','O','U'));
int left = 0;
int right = length - 1;
while(left < right){
while(left < right && !set.contains(charArray[left])){
left++;
}
while(left < right && !set.contains(charArray[right])){
right--;
}
char temp = charArray[left];
charArray[left] = charArray[right];
charArray[right] = temp;
left++;
right--;
}
return String.valueOf(charArray);
}