LeetCode第345题:反转字符串中的元音字符

题干

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

示例1:

输入:"hello"
输出:"holle"
复制代码

解法:

思路:其实一看到这种类似于替换的题,我们应该首先想到的就是双指针,前指针向后遍历,后指针向前遍历,在每次循环初始时判断前后指针对应的值:

  • 如果都是元音,交换,且指针前/后移
  • 分别单独判断前后指针是否是原因字母,若是则保留当前指针位置,若不是则前/后移

代码实现:

双指针实现:

执行用时:112 ms, 在所有 JavaScript 提交中击败了47.92%的用户

内存消耗:42.8 MB, 在所有 JavaScript 提交中击败了96.04%的用户

var reverseVowels = function (s) {
    let arrs = s.split('')
    let arr = ['a', 'o', 'e', 'i', 'u', 'A', 'O', 'E', 'I', 'U']
    let begin = 0, end = s.length - 1;
    while (begin < end) {
      if (arr.includes(s[begin]) && arr.includes(s[end])) {
        // 将字符串转为数组,进行元素的替换,最后再转会字符串
        let temp = arrs[begin];
        arrs[begin] = arrs[end];
        arrs[end] = temp;
        begin += 1;
        end -= 1;
      } else {
        if (arr.includes(arrs[begin])) {
          begin = begin
        } else {
          begin += 1
        }
        if (arr.includes(arrs[end])) {
          end = end
        } else {
          end -= 1
        }
      }
    }
    return arrs.join('');
  };
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享