345 Reverse Vowels of a String
1. Question
Write a function that takes a string as input and reverse only the vowels of a string.
Example 1: Given s = "hello", return "holle".
Example 2: Given s = "leetcode", return "leotcede".
Note: The vowels does not include the letter "y".
2. Implementation
(1) Two Pointers
class Solution {
public String reverseVowels(String s) {
if (s == null || s.length() == 0) {
return s;
}
String vowels = "aeiouAEIOU";
char[] letters = s.toCharArray();
int start = 0, end = s.length() - 1;
while (start < end) {
while (start < end && vowels.indexOf(letters[start]) < 0) {
++start;
}
while (start < end && vowels.indexOf(letters[end]) < 0) {
--end;
}
if (start >= end) {
break;
}
swap(letters, start, end);
++start;
--end;
}
return new String(letters);
}
public void swap(char[] letters, int start, int end) {
char temp = letters[start];
letters[start] = letters[end];
letters[end] = temp;
}
}
3. Time & Space Complexity
Two Pointers: 时间复杂度O(n), 空间复杂度O(1)
Last updated
Was this helpful?