You need to enable JavaScript to run this app. Python求解字符串列表最长公共前缀匹配长度的算法实现问题
优惠活动
大模型
产品
解决方案
定价
更多

Python求解字符串列表最长公共前缀匹配长度的算法实现问题

最长公共前缀长度计算实现

需求规则

给定包含N个字符串的列表,输出最大整数n,使得列表内所有字符串的前n个字符完全相同(即统计所有给定字符串开头位置的连续匹配字符个数)。

现有代码问题汇总

  • 循环边界错误:for index in range(0,a)将传入的字符串列表直接作为range的入参,而非列表长度,运行时会直接触发类型报错,需替换为遍历列表长度range(len(a))
  • 对比逻辑偏差:使用np.equal(a[index], a[index-1])对比两个完整字符串,而非逐位比对同索引位置的单字符
  • 变量未定义:循环中直接执行i +=1,但变量i从未提前初始化,会触发NameError
  • 索引逻辑异常:取a[index-1]的写法在index=0时会取到列表最后一个元素,不符合逐位校验的逻辑
  • 递归逻辑失效:满足单次相等条件时直接返回solution函数本身,既没有累计匹配长度,也没有完成全量校验,且引入的numpy依赖对实现无实际作用

可运行的正确参考代码

def solution(a):
    # 空列表直接返回0
    if not a:
        return 0
    # 取列表中最短字符串的长度,避免字符索引越界
    min_str_len = min(len(s) for s in a)
    match_count = 0
    # 逐字符位置校验所有字符串
    for pos in range(min_str_len):
        # 提取当前位置的所有字符,去重后长度为1即代表全部匹配
        if len({s[pos] for s in a}) == 1:
            match_count += 1
        else:
            break
    return match_count

# 配套测试用例
print(solution(['abcd', 'abce', 'abchg', 'abcfwqw', 'abcdfg'])) # 预期输出3
print(solution(['abcd', 'gbce', 'abchg', 'abcfwqw', 'abcdfg'])) # 预期输出0

实现逻辑说明

  • 全程无需额外第三方依赖,通过集合去重的方式快速判断同位置字符是否完全一致,代码可读性与运行效率均衡
  • 提前对最短字符串长度做截断,避免访问短字符串时触发索引越界错误
  • 遇到第一个不匹配的字符位置即终止循环,无需遍历完所有可能位置即可得到正确结果

内容的提问来源于stack exchange,提问作者유승주

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 03:27:06