鱿鱼西 2022-03-31 16:13 采纳率: 85.2%
浏览 20
已结题

这个是查找字符串数组中开头的最长公共字符串,怎么改成查找字符串数组中最长的公共字符串

问题相关代码
def get_commonstr(a):
    if len(a)==0:
        return ""
    cd,zcd=len(a),len(a[0])
    news=""#公共字符串
    for i in a[1:]:
        if zcd>len(i):
            zcd=len(i) #最短字符串长度
            news=i #最短字符串
    for m in range(zcd):
        flag=False #退出外部循环标志
        for i in a:#2;取值0,1
            if news[m]!=i[m]: #根据字符位置比较是否相等
                news=news[:m]
                flag=True
                break
        if flag:
            break
    return news


# s1=["fliower","fliowe","flight"]
s1=[['fliower',
  'wesaawsfliower',
  'dowflight',
  'abcdefg!fliower.exe',
  "{'aw1qwf': 'fliower.exe', 'Bu': 'fliower'}"]]
if __name__=="__main__":
    print[("结果:"+get_commonstr(s1))]

运行结果

IndexError: string index out of range

我想要达到的结果

这个是查找字符串数组中开头的最长公共字符串,怎么改成查找字符串数组中最长的公共字符串
比如上边的数组中,最长的公共字符串就是fliower

  • 写回答

1条回答 默认 最新

  • 怀念不必想念 2022-04-01 10:59
    关注

    1、调试发现这个代码还是有问题的,在取最短字符串的没有赋值a[0]而是赋值为空,导致第二个测试数据在寻找最小字符串时候为空。
    2、寻找最长字符串可以嵌套三层循环
    news = a[0]
    for i in a[ 1: ]:
    for j in news:
    for k in i :
    将news中的每一个与剩下a数组中的每一个对比,相同保留,不相同跳下一个

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月27日
  • 已采纳回答 7月19日
  • 创建了问题 3月31日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分