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

最长连续序列计算结果异常(恒为1或数值过高)问题咨询

问题根因
  • for循环迭代变量手动修改无效:Python中for i in range(xxx)的循环变量i由range生成器直接赋值,每次循环启动时都会被覆盖为生成的下一个值,你在循环体内部写的i += x不会影响下一次循环的i取值。比如当前循环i=0匹配成功,你手动把i改成3,下一次循环i会自动变成1,导致连续匹配永远只能触发1次,run最多累计到1,所以输出始终为1。
  • 注释run = 0后结果偏高:这行代码的作用是匹配失败时清零连续计数,注释后匹配失败的间隔不会打断计数,run会累计所有匹配成功的次数,而不是连续匹配的次数,自然结果远大于正确值。
修复方案

将内层的for循环替换为while循环,手动控制索引步进,保证匹配成功后可以跳过已匹配的x位字符:

# find sequences
for y in range(len(headers)-1):
    x = len(headers[y+1])
    highest = 0
    run = 0
    i = 0
    seq_len = len(sequence)
    while i < seq_len:
        if (sequence[i:i+x]) == headers[y+1]:
            run += 1
            # 匹配成功直接跳x位,避免重复匹配
            i += x
        else:
            # 匹配失败更新最长长度,清零连续计数
            if run > highest:
                highest = run
            run = 0
            # 匹配失败只跳1位
            i += 1
    # 循环结束后额外判断一次,避免最长连续序列出现在末尾的情况被漏掉
    if run > highest:
        highest = run
    results[y] = highest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:12:00