Skip to content

No.345 反转字符串中的元音字母

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

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

示例 1:

text
输入:s = "hello"
输出:"holle"

示例 2:

text
输入:s = "leetcode"
输出:"leotcede"

提示:

  • 1 <= s.length <= 3 * 10^5
  • s 由 可打印的 ASCII 字符组成

解题思路

实现

双指针

js
/**
 * @param {string} s
 * @return {string}
 */
var reverseVowels = function (s) {
  let vowels = "aeiouAEIOU";
  let arr = Array.from(s);
  let l = 0;
  let r = s.length - 1;
  while (l < r) {
    let lIndex = vowels.indexOf(arr[l]);
    let rIndex = vowels.indexOf(arr[r]);
    if (lIndex === -1) {
      l++;
    } else if (rIndex === -1) {
      r--;
    } else {
      [arr[l], arr[r]] = [arr[r], arr[l]];
      l++;
      r--;
    }
  }
  return arr.join("");
};