问题
最长公共子串问题是寻找两个或多个已知字符串最长的子串。此问题与最长公共子序列问题的区别在于子序列不必是连续的,而子串却必须是。
假设有两个字符串,找出其中最长的公共连续子串,输出其长度,并求出该最长公共子串。
输入:
abcde
bcd
输出:
3
bcd
思路
动态规划
填表格
代码
def maxLengthStr(a,b):
n = len(a)
m = len(b)
res = [[0 for _ in range(m)] for _ in range(n)]
for j in range(m):
if a[0] == b[j]:
res[0][j] = 1
for i in range(n):
if b[0] == a[i]:
res[i][0] = 1
max_len = 0
index = 0
for i in range(1,n):
for j in range(1,m