def find_lcsubstr(s1, s2):
# 生成0矩阵,为方便后续计算,比字符串长度多了一列
m = [[0 for i in range(len(s2)+1)] for j in range(len(s1)+1)]
# 最长匹配的长度
mmax = 0
# 最长匹配对应在s1中的最后一位
p = 0
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
return s1[p-mmax:p],mmax #返回最长子串及其长度
print(find_lcsubstr('fish','fosh'))
print(find_lcsubstr('fort','fosh'))
10.最长公共子串
最新推荐文章于 2022-07-05 22:49:02 发布