连续3个及以上相同字符移除程序优化:禁用pop与break
符合要求的糖果消消乐字符串处理程序
功能说明
- 接收用户输入字符串,持续移除所有3个及以上连续相同字符的组,直到没有符合条件的组存在
- 支持用户重复输入字符串,直到选择退出
约束条件
- 仅允许使用
while、if、elif、else语句 - 禁止使用
pop()方法,必须改用remove()方法 - 禁止使用
break语句
优化后代码
# 欢迎信息 print("你好!欢迎来到糖果消消乐字符串版!") # 主循环,支持重复操作 while True: decision = input("是否要输入字符串?") if decision == "是" or decision == "yes" or decision == "Yes": string_input = input("请输入字符串:") chars_list = list(string_input) print(f"原始列表:{chars_list}") print(f"原始字符串:{string_input}") # 持续检查并移除连续重复组的循环 has_duplicates = True while has_duplicates: has_duplicates = False idx = 0 # 遍历列表查找连续3个相同字符 while idx <= len(chars_list) - 3: if chars_list[idx] == chars_list[idx+1] == chars_list[idx+2]: # 记录要移除的字符 target_char = chars_list[idx] # 移除三个连续相同字符(remove会删除第一个匹配项,执行三次完成移除) chars_list.remove(target_char) chars_list.remove(target_char) chars_list.remove(target_char) has_duplicates = True # 重置索引,重新检查整个列表 idx = 0 else: idx += 1 result = "".join(chars_list) print(f"处理后的字符串:{result}\n") elif decision == "否" or decision == "no" or decision == "No": print("感谢使用!祝你愉快!") exit() else: print("请输入「是」或「否」,或者英文的Yes/No")
代码说明
- 主循环设计:通过外层
while True实现用户重复操作,直到选择退出 - 重复移除逻辑:用
has_duplicates标记是否还有需要移除的组,每次移除后重置索引重新检查,确保移除后新形成的连续组也被处理 - 替换pop为remove:通过记录目标字符,连续调用三次
remove()来删除三个连续相同的字符(remove()会删除列表中第一个匹配的元素,连续三次刚好移除连续的三个) - 输入兼容:支持中文「是/否」和英文「Yes/No」的输入判断,同时对无效输入给出提示
内容的提问来源于stack exchange,提问作者Dark _Knight
相关产品推荐
相关产品推荐

