当前位置:实例文章 » 其他实例» [文章]LeetCode 75 第五题(345)反转字符串中的元音字母

LeetCode 75 第五题(345)反转字符串中的元音字母

发布人:shili8 发布时间:2025-01-21 06:02 阅读次数:0

**反转字符串中的元音字母**

### 题目描述给定一个只包含小写英文字母的字符串 `s`,请返回该字符串中所有元音字母的反转。

**注意:**

* 元音字母为 `'a'`, `'e'`, `'i'`, `'o'`, `'u'`
* 所有非元音字母保持原样### 示例1:

输入:`s = "hello"`

输出:`"holle"`

### 示例2:

输入:`s = "leetcode"`

输出:`"leotcede"`

### 示例3:

输入:`s = "aouy"``

输出:`"uoay"`

### 解决方案#### 方法一:使用 Python 的列表推导式和 `join()` 函数

def reverseVowels(s: str) -> str:
 """
 反转字符串中的元音字母 Args:
 s (str): 只包含小写英文字母的字符串 Returns:
 str:该字符串中所有元音字母的反转 """
 # 将字符串转换为列表,以便进行修改 s = list(s)
 # 定义元音字母集合 vowels = set('aeiou')
 # 初始化两个指针,分别指向字符串的开始和结束 left, right =0, len(s) -1 # 进行反转操作 while left < right:
 # 如果左边指针指向的字符是元音字母,则将其与右边指针指向的字符交换,并移动左边指针 if s[left] in vowels:
 if s[right] in vowels:
 s[left], s[right] = s[right], s[left]
 left +=1 right -=1 else:
 # 如果右边指针指向的字符不是元音字母,则移动左边指针 left +=1 else:
 # 如果左边指针指向的字符不是元音字母,则移动右边指针 right -=1 # 将列表转换为字符串,并返回结果 return ''.join(s)


#### 方法二:使用 Python 的 `reversed()` 函数和元组
def reverseVowels(s: str) -> str:
 """
 反转字符串中的元音字母 Args:
 s (str): 只包含小写英文字母的字符串 Returns:
 str:该字符串中所有元音字母的反转 """
 # 将字符串转换为元组,以便进行修改 s = tuple(s)
 # 定义元音字母集合 vowels = set('aeiou')
 # 初始化两个指针,分别指向元组的开始和结束 left, right =0, len(s) -1 # 进行反转操作 while left < right:
 # 如果左边指针指向的字符是元音字母,则将其与右边指针指向的字符交换,并移动左边指针 if s[left] in vowels:
 if s[right] in vowels:
 s = s[:left] + (s[right],) + s[left+1:right] + (s[left],) + s[right+1:]
 left +=1 right -=1 else:
 # 如果右边指针指向的字符不是元音字母,则移动左边指针 left +=1 else:
 # 如果左边指针指向的字符不是元音字母,则移动右边指针 right -=1 # 将元组转换为字符串,并返回结果 return ''.join(s)


#### 方法三:使用 Python 的 `list.pop()` 和 `str.join()` 函数
def reverseVowels(s: str) -> str:
 """
 反转字符串中的元音字母 Args:
 s (str): 只包含小写英文字母的字符串 Returns:
 str:该字符串中所有元音字母的反转 """
 # 将字符串转换为列表,以便进行修改 s = list(s)
 # 定义元音字母集合 vowels = set('aeiou')
 # 初始化两个指针,分别指向列表的开始和结束 left, right =0, len(s) -1 # 进行反转操作 while left < right:
 # 如果左边指针指向的字符是元音字母,则将其与右边指针指向的字符交换,并移动左边指针 if s[left] in vowels:
 if s[right] in vowels:
 s.pop(right)
 s.insert(left, s[right])
 left +=1 right -=1 else:
 # 如果右边指针指向的字符不是元音字母,则移动左边指针 left +=1 else:
 # 如果左边指针指向的字符不是元音字母,则移动右边指针 right -=1 # 将列表转换为字符串,并返回结果 return ''.join(s)


### 测试用例
import unittestclass TestReverseVowels(unittest.TestCase):
 def test_reverse_vowels(self):
 self.assertEqual(reverseVowels("hello"), "holle")
 self.assertEqual(reverseVowels("leetcode"), "leotcede")
 self.assertEqual(reverseVowels("aouy"), "uoay")

if __name__ == "__main__":
 unittest.main()


### 总结本文介绍了如何使用 Python 实现反转字符串中的元音字母的功能。我们提供了三个不同的方法,分别使用列表推导式和 `join()` 函数、元组和 `reversed()` 函数,以及列表和 `pop()` 和 `insert()` 方法。这些方法都可以正确地反转字符串中的元音字母,并且测试用例表明它们都是有效的。

其他信息

其他资源

Top