调试花的时间长了,死在了pattern.findall()返回的是一个list类型值!!
最长公共子串
pattern = re.compile('“(.*)”') #由于输入一串字符串,这里设置一个正则匹配,取出“”里的内容
#a = input() #调试使用下面直接输入
a = 'A=“ABCD”,B=“CBCE”' #输入非格式化
n = a.split(',')
s1 = str(pattern.findall(n[0])) # 这里findall返回一个list类型的值 强制转换为 str 类型
s2 = str(pattern.findall(n[1]))
#print(type(s1))
#print(s1,s2)
m=[[0 for i in range(len(s2)+1)] for j in range(len(s1)+1)] #生成0矩阵,为方便后续计算,比字符串长度多了一列
mmax=0 #最长匹配的长度
p=0 #最长匹配对应在s1中的最后一位
for i in range(len(s1)):
for j in range(len(s2)):
if s1[i]==s2[j]:
m[i+1][j+1]=m[i][j]+1
if m[i+1][j+1]>mmax:
mmax=m[i+1][j+1]
p=i+1
#print(m)
print(mmax)
参考https://blog.csdn.net/wateryouyo/article/details/50917812