求最大子串
a = 'xabcd'
b = 'abcd'
# 01000
# 00100
# 00010
# 00001
#参照上面的矩阵编写
def foo1(a, b):
length_a = len(a)
length_b = len(b)
matrix = [[0]*length_a for _ in range(length_b)] #四行五列 行是b生成的 列是a生成的
xmax = 0
xindex = 0
for i, x in enumerate(b):
for j, y in enumerate(a):
if x == y:
if i == 0 or j == 0: #考虑边界问题, 只有横坐标和纵坐标二者其一为0才设置值为1
matrix[i][j] = 1
else:
matrix[i][j] = matrix[i-1][j-1] + 1 #然后回头望, 看自己的左上角+1
if xmax < matrix[i][j]: #取最大的值
xmax = matrix[i][j]
xindex = j #取最大索引, 以后通过最大索引推算出初始索引是多少
print(xmax, xindex)
print(a[xindex-xmax+1:xindex+1])
return matrix
print(*foo1(a, b), sep='\n')