如何用Python优化连续元音字符删除问题的代码实现
简洁实现连续元音去重逻辑
需求明确:如果单词包含两个连续的元音(a、e、i、o、u、y),删除第二个元音后输出结果。
你的原代码嵌套了四层循环,逻辑冗余且处理范围受限(比如range(1,len(word)-4)会漏掉长单词的后半部分),这里给你两个更简洁高效的实现方案:
方案一:处理所有连续元音对
这个方案会把单词中所有连续的元音对里的第二个元音都删掉,比如输入"aaeeii"会输出"aei":
vowels = {'a', 'e', 'i', 'o', 'u', 'y'} word = input("Enter the word: ").lower() result = [] for char in word: # 检查当前字符和结果最后一个字符是否都是元音,是就跳过当前字符 if result and result[-1] in vowels and char in vowels: continue result.append(char) print(''.join(result))
优势说明
- 用集合存储元音,查找效率远高于列表
- 单循环遍历,时间复杂度为O(n)(n为单词长度),逻辑清晰易懂
- 能处理任意长度的单词,不会漏掉任何连续元音对
方案二:只处理第一组连续元音对
如果你的需求是只删除第一组连续元音中的第二个(找到第一组就停止处理),可以用这个方案:
vowels = {'a', 'e', 'i', 'o', 'u', 'y'} word = input("Enter the word: ").lower() result = list(word) for i in range(1, len(result)): if result[i-1] in vowels and result[i] in vowels: del result[i] break # 找到第一组后立即退出循环 print(''.join(result))
说明
- 把字符串转成列表方便直接删除指定位置的字符
- 遍历一次找到第一组连续元音后就停止,适合只需要处理一次的场景
内容的提问来源于stack exchange,提问作者Rama Aljelani
相关产品推荐
相关产品推荐

