反转字符串中的元音字母。给一个字字符串s,仅反转字符串中的所有元音字母。
元音字母包括 a,e,i,o,u,并且可能以大小写的形式出现。
双指针
使用两个指针 i 和 j 对字符串进行遍历,指针 i 初始时指向字符串的首位,j 指向字符串的末位,在遍历过程中,不停将 i 向右移动,直到指向一个元音字母,不停将 j 向左移动,直到 j 指向一个元音字母,如果 i < j,交换 i 和 j指向的元音字母,否则说明所有的元音字母均已经遍历过。
- 时间复杂度 O(n),空间复杂福O(n)
- Runtime: 100 ms, faster than 53.48%
- Memory Usage: 44.6 MB, less than 60.14%
/**
* @param {string} s
* @return {string}
*/
var reverseVowels = function(s) {
let left = 0;
let right = s.length - 1;
let len = s.length - 1;
let arr = s.split('');
while (left < right) {
while (left < len && !isVowel(s[left])) {
left++;
}
while (right > 0 && !isVowel(s[right])) {
right--;
}
if (left < right) {
swap(arr, left, right);
left++;
right--;
}
}
return arr.join('');
};
var isVowel = function(ch) {
return 'aeiouAEIOU'.indexOf(ch) > -1;
}
var swap = function(num, i, j) {
let tmp = num[i];
num[i] = num[j];
num[j] = tmp;
}
网友评论