345. Reverse Vowels of a String
题目简介
/**
* @param {string} s
* @return {string}
*/
题目给我们一个字符串 s,其中包含有大小写的母音字母以及一些 ASC2 字符
题目要求我们把 s 中的所有母音字符全部反转,然后返回一个新的字符串
解题思路
我们可以用一个数组 res 来保存字符串 s
然后我们使用双指针分别从数组头尾往中间遍历
遍历过程中如果两个指针同时指向了母音字符则交换两个指针指向的元素,否则继续遍历
最后我们将数组 res 重新组合为字符串返回即可
Javascript
/**
* @param {string} s
* @return {string}
*/
var reverseVowels = function(s) {
const vowels = new Set(['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'])
const res = s.split('')
let left = 0
let right = s.length - 1
while(left < right) {
if(!vowels.has(s[left])) {
left++
}
if(!vowels.has(s[right])) {
right--
}
if(vowels.has(s[left]) && vowels.has(s[right])) {
;[res[right], res[left]] = [res[left], res[right]]
right--
left++
}
}
return res.join('')
};