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

Python编程求助:查找字母列表最长连续重复序列

解决最长连续重复字符序列问题

这里提供两种实用的实现方案,你可以根据需求选择:

基础遍历实现

逻辑直观,适合理解核心思路:

def find_longest_consecutive(chars):
    if not chars:
        return 0, ""  # 处理空列表的边界情况
    
    max_length = 1
    current_length = 1
    max_char = chars[0]
    current_char = chars[0]
    
    for char in chars[1:]:
        if char == current_char:
            current_length += 1
            # 更新最长记录
            if current_length > max_length:
                max_length = current_length
                max_char = current_char
        else:
            current_char = char
            current_length = 1
    
    return max_length, max_char

# 测试示例
test_list = ["C", "A", "G", "G", "G", "T", "A", "C", "A", "A"]
length, char = find_longest_consecutive(test_list)
print(f"最长连续重复长度:{length},对应字符:{char}")

代码说明

  • 先处理空列表的特殊情况,返回长度0和空字符串
  • 初始化四个变量,分别跟踪最长长度、当前连续长度、最长字符、当前跟踪字符
  • 从第二个元素开始遍历:
    • 若当前字符和跟踪字符一致,增加当前连续长度,同时检查是否超过最长记录,超过则更新
    • 若不一致,重置当前跟踪字符和长度
  • 最后返回最长长度和对应字符

使用itertools.groupby简化实现

借助Python标准库让代码更简洁:

from itertools import groupby

def find_longest_consecutive(chars):
    if not chars:
        return 0, ""
    
    # 用groupby把连续相同字符分组,生成(字符,组长度)的元组列表
    groups = [(char, len(list(group))) for char, group in groupby(chars)]
    # 按组长度排序,取最大的那一组
    max_group = max(groups, key=lambda x: x[1])
    return max_group[1], max_group[0]

# 测试示例
test_list = ["C", "A", "G", "G", "G", "T", "A", "C", "A", "A"]
length, char = find_longest_consecutive(test_list)
print(f"最长连续重复长度:{length},对应字符:{char}")

代码说明

  • groupby会自动把连续相同的字符归为一组,返回字符和对应的迭代器
  • 将每个分组转换为(字符,组长度)的元组,再通过max函数按长度筛选出最长的分组
  • 最终返回该分组的长度和字符

两种方案运行你的测试示例,都会得到结果:3 和 "G"。

内容的提问来源于stack exchange,提问作者Valeria Gini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:20:38