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数组中的每一个对比,相同保留,不相同跳下一个