如何实现仅删除字符串中重复元音的Python函数?
解决方案
你的代码目前会移除所有重复字符,包括辅音,这和你只删除重复元音的需求不符。我们可以调整逻辑,只跟踪已出现过的元音,辅音则直接保留:
def del_rep_vow(s): ''' >>> del_rep_vow('adaptation') 'adpttion' >>> del_rep_vow('repetitions') 'reptitons' >>> del_rep_vow('kingkong') 'kingkong' >>> del_rep_vow('aeiouaeiou') 'aeiou' ''' vowels = {'a', 'e', 'i', 'o', 'u'} seen_vowels = set() final_list = [] for char in s: if char in vowels: if char not in seen_vowels: seen_vowels.add(char) final_list.append(char) else: final_list.append(char) return ''.join(final_list) if __name__ == "__main__": import doctest doctest.testmod(verbose=True)
逻辑说明:
- 定义元音集合
vowels,用于快速判断字符是否为元音 - 用
seen_vowels集合记录已经出现过的元音,确保每个元音只保留第一次出现的实例 - 遍历输入字符串时:
- 若字符是元音且未在
seen_vowels中,就添加到结果列表并标记为已见 - 若字符是辅音,直接添加到结果列表,不做重复检查
- 若字符是元音且未在
运行代码后,所有doctest用例都会通过,符合你要求的输出。
内容的提问来源于stack exchange,提问作者Alba
相关产品推荐
相关产品推荐

