LeetCode——反转字符串中的元音字母(JavaScript)

xiaoxiao2021-03-01  12

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

示例 1:

输入: "hello" 输出: "holle"

示例 2:

输入: "leetcode" 输出: "leotcede"

说明: 元音字母不包含字母"y"。


思路:

典型的双指针——对撞指针解法。设置两个指针,一头一尾,相向运动。

i:头部指针,j:尾部指针。

判断一个字符是否是元音字母,采用正则表达式。正则表达式的详细用法请看:正则表达式用法大全。

JavaScript中正则表达式用法: let reg = /[aeiouAEIOU]/ // 用/.../ 两个斜线包括起来,说明这是正则表达式 // 用中括号表示匹配中括号中任一字符 reg.test('a') // true reg.test('c') // false

当i < j 时循环:

判断 i 上的元素是否是元音字母。若不是,则i ++。

判断 j  上的元素是否是元音字母。若不是,则 j--。

判断 i、j 上的元素是否相等,若不等,则交换 i、j上的元素。(注意:字符串是不可改变的,可以将字符串转换成数组,也可以采用slice将字符串切片来组装成新字符串。)

移动 i 和 j 。

/** * @param {string} s * @return {string} */ var reverseVowels = function(s) { let i = 0, j = s.length-1, reg = /[aeiouAEIOU]/, str = s while (i < j) { if (!reg.test(s[i])) { i ++; continue; } if (!reg.test(s[j])) { j--; continue; } if (s[i] !== s[j]) { str = str.slice(0,i) + s[j] + str.slice(i+1,j) + s[i] + str.slice(j+1) } i++ j-- } return str };

 

转载请注明原文地址: https://www.6miu.com/read-3350028.html

最新回复(0)