Skip to content

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

js
;(function () {
  /**
   * 345. 反转字符串中的元音字母
   * 给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。
   * 元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现。
   *
   * 输入:s = "hello"
   * 输出:"holle"
   *
   * 输入:s = "leetcode"
   * 输出:"leotcede"
   *
   */

  function reverseVowels(s: string): string {
    // 方法一:双指针
    type ObjType = {
      [prop: string]: string
    }
    const vowelsObj: ObjType = {
      a: 'a',
      e: 'e',
      i: 'i',
      o: 'o',
      u: 'u',
      A: 'A',
      E: 'E',
      I: 'I',
      O: 'O',
      U: 'U'
    }
    let sArr: string[] = s.split('')
    let sLen = sArr.length
    for (let left = 0, right = sLen - 1; left < right; ) {
      !vowelsObj[sArr[left]] && ++left
      !vowelsObj[sArr[right]] && --right
      if (vowelsObj[sArr[left]] && vowelsObj[sArr[right]]) {
        ;[sArr[left], sArr[right]] = [sArr[right], sArr[left]]
        ++left
        --right
      }
    }
    return sArr.join('')

    // 备注:
    // const isVowel = (ch) => {
    //     return "aeiouAEIOU".indexOf(ch) >= 0;
    // }
  }

  const s = 'hello'
  const s1 = 'lEetcode'
  console.log(reverseVowels(s))
  console.log(reverseVowels(s1))
})()