一、最长公共子串(Longest Common Substring)
遍历的时候用一个二维数组存储相应位置的信息,如果两个子串1与子串2相应位置相等:则看各自前一个位置是否相等,相等则该位置值B[i][j]=B[i-1][j-1]+1,不相等则置为1。如果两个子串1与子串2相应位置不相等,则B[i][j]=0。如下:
代码如下:
def longestSub(str1,str2): s1=list(str1) s2=list(str2) B=[([0]*len(s2)) for i in range(len(s1))] maxLen=0 for i in range(len(s1)): for j in range(len(s2)): if s1[i]==s2[j]: if i-1>=0 and j-1>=0: B[i][j]=B[i-1][j-1]+1 if B[i][j]>maxLen: maxLen=B[i][j] else: B[i][j]=1 else: B[i][j] = 0 print(B) return maxLen s1="asdfas" s2="werasdfaswer" print(longestSub(s1,s2))
原文地址:https://www.cnblogs.com/gczr/p/8352799.html
时间: 2024-10-14 01:43:52