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

请求修复Python最长公共前缀函数的索引越界问题

修复最长公共前缀代码的索引越界问题

你的代码核心思路没问题,但索引越界的原因是没有检查当前要访问的字符位置j是否超出了某个字符串的长度。比如输入["ab","a"]时,当j=1,第二个字符串"a"的长度只有1,没有索引为1的字符,直接访问就会报错。

基于你的现有代码,只需要在每次比较字符前,先判断所有字符串的长度是否都大于j;如果有字符串长度<=j,说明公共前缀已经到尽头,直接终止循环。修改后的代码如下:

strs = ["ab","a"]
def longestCommonPrefix(strs):
    for word in strs:
        if word == "":
            return ""
    if len(strs) == 1:
        return strs[0]
    common_prefix = ""
    j = 0
    Common = True
    while Common:
        # 新增检查:如果有字符串的长度小于等于j,说明已经到了该字符串的末尾,停止循环
        for word in strs:
            if len(word) <= j:
                Common = False
                break
        if not Common:
            break
        # 原来的字符比较逻辑
        for i in range(len(strs) - 1):
            if strs[i][j] != strs[i + 1][j]:
                Common = False
                break
        else:
            common_prefix += strs[0][j]
            j += 1
    return common_prefix
print(longestCommonPrefix(strs))

修改说明

  • 在每次进入字符比较前,新增一个循环检查所有字符串的长度是否都大于当前的j。如果有字符串长度<=j,说明这个字符串已经没有第j个字符了,公共前缀无法继续延长,直接停止循环。
  • 这个修改完全基于你原有的代码逻辑,没有重写核心部分,只是补上了边界检查的环节。

测试输入["ab","a"]时,当j=1,检查到第二个字符串长度是1<=1,所以Common设为False,循环终止,返回已经积累的"a",符合预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:20:48