「力扣」第 345 题:反转字符串中的元音字母(简单)

liweiwei1419 ... 2021-12-24 双指针
  • 双指针
About 2 min

# 题目描述

给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。

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

示例 1:

输入:s = "hello"
输出:"holle"
1
2

示例 2:

输入:s = "leetcode"
输出:"leotcede"
1
2

提示:

  • 1<=s.length<=31051 <= s.length <= 3 * 10^5
  • s可打印的 ASCII 字符组成

# 思路分析

  • 使用指针对撞,遇到元音字符的时候就听下来交换,交换以后指针继续向前;
  • 这样的代码其实是套路,多写几遍就不会忘记了,我们在基础算法的学习中,曾经也有遇到过。

参考代码

# 要注意的地方

  • 极端的情况要考虑到:if (s.length() == 0) return "";
  • 还有一种极端的情况要考虑到,就是 i 和 j 可以一直走到底的情况,翻译成大白话就是:如果走到最后一位都不符号要求的话,就不能再前进了。代码实现如下:
while (i < chars.length && !checkVowels(chars[i])) {
    i++;
}
while (j >= 0 && !checkVowels(chars[j])) {
    j--;
}
1
2
3
4
5
6

上述代码特别容易忽略掉:i < chars.lengthj >= 0 这两个前提条件。

Last update: January 13, 2022 07:15
Contributors: liweiwei1419 , suanfa8