反转字符串中的元音字母

🎯 问题描述(来源于LeetCode)

描述
给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。
元音字母包括 'a''e''i''o''u',且可能以大小写两种形式出现不止一次
说明

  • 1 <= s.length <= 3 * 105
  • s 由 可打印的 ASCII 字符组成

示例

  • 示例 1:
1
2
3
4
5
6
7
输入:s = "IceCreAm"

输出:"AceCreIm"

解释:

s中的元音是 `['I', 'e', 'e', 'A']`。反转这些元音,`s` 变为 `"AceCreIm"`.
  • 示例 2:
1
2
3
输入:s = "leetcode"

输出:"leotcede"

💻 解题思路

思路1:对撞指针

思路1:代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution:
def reverseVowels(self, s: str) -> str:
left , right = 0, len(s)-1
batter='aeiouAEIOU'
s_list=list(s)
while left < right :
if s_list[left] in batter and s_list[right] in batter:
s_list[left],s_list[right]=s_list[right],s_list[left]
left+=1
right-=1
elif s_list[left] in batter:
right-=1
else:
left+=1
return ''.join(s_list)

思路1:📊 性能分析

提交结果
  • 运行时间:7ms击败92.54%
  • 内存消耗:20.23MB击败58.51%
复杂度验证
  • 时间复杂度:O(N)O(N)
  • 空间复杂度:O(N)O(N)

思考