Skip to main content

反转字符串中的元音字母

题目

给你一个字符串 s, 仅反转字符串中的所有元音字母, 并返回结果字符串.

元音字母包括 'a', 'e', 'i', 'o', 'u', 且可能以大小写两种形式出现不止一次.

提示:
  • 1 <= s.length <= 3 * 10⁵
  • s可打印的 ASCII 字符组成
示例
输入: s = "IceCreAm"
输出: "AceCreIm"
解释: s 中的元音是 ['I', 'e', 'e', 'A']. 反转这些元音, s 变为 "AceCreIm".
输入: s = "leetcode"
输出: "leotcede"

题解

/**
* @param {string} s
* @return {string}
*/
var reverseVowels = function (s) {
const vowels = 'aeiouAEIOU'
let left = 0
let right = s.length - 1
let arr = s.split('')

while (left < right) {
if (!vowels.includes(arr[left])) {
left++
} else if (!vowels.includes(arr[right])) {
right--
} else {
;[arr[left], arr[right]] = [arr[right], arr[left]]
left++
right--
}
}

return arr.join('')
}