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

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