如何从字符串中提取连续重复次数≥2的子串?
获取字符串中连续重复子串的正确实现
现有代码存在逻辑缺陷:它仅遍历相邻字符,每次发现相同就将单个字符加入列表,无法识别完整的连续重复段。比如输入abbdccc时,原代码输出为['b', 'c', 'c'],和期望的['bb', 'ccc']不符。
以下是修正后的实现代码:
def get_consecutive_duplicates(s): if not s: return [] result = [] current_char = s[0] current_count = 1 for char in s[1:]: if char == current_char: current_count += 1 else: if current_count > 1: result.append(current_char * current_count) current_char = char current_count = 1 # 处理最后一段连续重复的字符 if current_count > 1: result.append(current_char * current_count) return result # 测试示例 print(get_consecutive_duplicates('abbdccc')) # 输出: ['bb', 'ccc'] print(get_consecutive_duplicates('34456788')) # 输出: ['44', '88']
代码逻辑说明
- 先处理空字符串的边界情况,直接返回空列表
- 初始化当前跟踪的字符和连续计数,从字符串第二个字符开始遍历
- 遇到相同字符时累加计数,遇到不同字符时,检查之前的连续计数是否大于1,是则生成完整重复子串加入结果,再重置跟踪的字符和计数
- 遍历结束后,必须单独处理最后一段可能的连续重复字符,避免遗漏
内容的提问来源于stack exchange,提问作者sim
相关产品推荐
相关产品推荐

