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

Python如何拼接存在公共重叠子串的多个字符串?

多个含公共重叠子串的字符串拼接Python实现

核心实现思路

  • 首先实现工具函数计算两个字符串的最大重叠长度:即前一个字符串的后缀与后一个字符串的前缀的最长公共子串长度
  • 初始化拼接结果为列表第一个字符串,依次遍历剩余字符串
  • 每轮计算当前拼接结果与待拼接字符串的最大重叠长度,将待拼接字符串去除重叠前缀后追加到结果末尾

完整代码实现

def get_max_overlap(str1: str, str2: str) -> int:
    # 最大可能的重叠长度为两个字符串的较短长度
    max_possible = min(len(str1), len(str2))
    # 从最长可能的重叠开始倒序验证
    for k in range(max_possible, -1, -1):
        if str1.endswith(str2[:k]):
            return k
    return 0

def merge_overlap_strings(str_list: list[str]) -> str:
    if not str_list:
        return ""
    # 若输入字符串带首尾空白可先执行strip处理
    result = str_list[0]
    for s in str_list[1:]:
        overlap_len = get_max_overlap(result, s)
        result += s[overlap_len:]
    return result

测试验证

输入示例:

ONESTRING
STRINGTHREE
THREEFOUR 
FOURFIVE

调用代码:

input_list = ["ONESTRING", "STRINGTHREE", "THREEFOUR ", "FOURFIVE"]
# 处理输入中的多余空格
input_list = [s.strip() for s in input_list]
print(merge_overlap_strings(input_list))

输出结果:

ONESTRINGTHREEFOURFIVE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:24:01