「力扣」第 345 题:反转字符串中的元音字母(简单)
liweiwei1419 ... 2021-12-24 About 2 min
# 题目描述
给你一个字符串 s
,仅反转字符串中的所有元音字母,并返回结果字符串。
元音字母包括 'a'
、'e'
、'i'
、'o'
、'u'
,且可能以大小写两种形式出现。
示例 1:
输入:s = "hello"
输出:"holle"
1
2
2
示例 2:
输入:s = "leetcode"
输出:"leotcede"
1
2
2
提示:
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
2
3
4
5
6
上述代码特别容易忽略掉:i < chars.length
和 j >= 0
这两个前提条件。