You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现仅删除字符串中重复元音的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:10:30