美文网首页
345. Reverse Vowels of a String

345. Reverse Vowels of a String

作者: jluemmmm | 来源:发表于2021-10-02 14:11 被阅读0次

反转字符串中的元音字母。给一个字字符串s,仅反转字符串中的所有元音字母。

元音字母包括 a,e,i,o,u,并且可能以大小写的形式出现。

双指针

使用两个指针 i 和 j 对字符串进行遍历,指针 i 初始时指向字符串的首位,j 指向字符串的末位,在遍历过程中,不停将 i 向右移动,直到指向一个元音字母,不停将 j 向左移动,直到 j 指向一个元音字母,如果 i < j,交换 i 和 j指向的元音字母,否则说明所有的元音字母均已经遍历过。

  • 时间复杂度 O(n),空间复杂福O(n)
  • Runtime: 100 ms, faster than 53.48%
  • Memory Usage: 44.6 MB, less than 60.14%
/**
 * @param {string} s
 * @return {string}
 */
var reverseVowels = function(s) {
  let left = 0;
  let right = s.length - 1;
  let len = s.length - 1;
  let arr = s.split('');
  while (left < right) {
    while (left < len && !isVowel(s[left])) {
      left++;
    }
    while (right > 0 && !isVowel(s[right])) {
      right--;
    }
    if (left < right) {
      swap(arr, left, right);
      left++;
      right--;
    }
  }
  return arr.join('');
};

var isVowel = function(ch) {
  return 'aeiouAEIOU'.indexOf(ch) > -1;
}

var swap = function(num, i, j) {
  let tmp = num[i];
  num[i] = num[j];
  num[j] = tmp;
}

相关文章

网友评论

      本文标题:345. Reverse Vowels of a String

      本文链接:https://www.haomeiwen.com/subject/kpzpnltx.html