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

列表重叠字符串序列合并实现与现有代码异常问题求解

相邻重叠字符串合并问题分析与实现

现有代码的问题

你的代码存在两个核心逻辑错误:

  • 仅对列表的第一个元素和最后一个元素做拼接,完全跳过了中间所有元素的处理,仅当列表长度为2时有可能得到正确结果
  • a.index(b[0]) 只会取目标字符的首次出现位置,无法判断两个字符串的最大重叠长度,遇到首字符重复出现的场景会直接截断错误

实现思路

你已经提前将存在重叠的字符串调整为相邻排列,只需要按顺序遍历列表,逐个合并相邻的两个字符串即可:

  1. 初始结果为列表第一个元素
  2. 从第二个元素开始,依次计算当前结果与下一个待合并字符串的最大重叠长度k,k满足:当前结果的最后k个字符 = 待合并字符串的前k个字符
  3. 将待合并字符串去掉前k个字符后拼接到当前结果末尾
  4. 遍历完成后得到最终合并结果

实现代码

def merge_adjacent_overlap(str_list):
    if not str_list:
        return []
    merged = str_list[0]
    for current in str_list[1:]:
        max_overlap = 0
        # 从最大可能的重叠长度开始倒序查找
        for k in range(min(len(merged), len(current)), 0, -1):
            if merged.endswith(current[:k]):
                max_overlap = k
                break
        merged += current[max_overlap:]
    return [merged]

# 测试短序列示例
test1 = ['aacc','accb','ccbe']
print(merge_adjacent_overlap(test1))
# 输出:['aaccbe']

# 测试长序列
test2 = ['TGT','GTT','TTC','TCC','CCC','CCT','CCT','CTG','TGA','GAA','AAG','AGC','GCG','CGT','TGC','GCT','CTC','TCT','CTT','TTT','TTT','TTC','TCA','CAT','ATG','TGG','GGA','GAT','ATC','TCT','CTA','TAT','ATG','TGA','GAT','ATT','TTC']
print(merge_adjacent_overlap(test2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:15:06