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))
})()