python实现求两个字符串的最长公共子串

来源:互联网 发布:知乎重庆普瑞眼科医院 编辑:程序博客网 时间:2024/04/30 23:07
def initindexs(char,string):    index = []    length = len(string)    for i in range(length):        if char == string[i]:            index.append(i+1) #保存相同字符坐标+1的位置    return indexdef Substring(str1,str2):    str1_len=len(str1)    str2_len=len(str2)    length=0    longest = 0    startposition = 0     start = 0    for i in range(str1_len):        start = i        index = initindexs(str1[i],str2)        index_len = len(index)        for j in range(index_len):            end = i+1             while end <str1_len and index[j]<str2_len and str1[end] == str2[index[j]]:#保证下标不会超出列表范围                end += 1                index[j] += 1            length = end-start            if length > longest:                longest = length                startposition = start    return startposition,longeststr1 = "pmcdcdfe"str2 = 'aoccddcdfe'Substring(str1,str2)(start,longest) = Substring(str1,str2)print(start,longest)for i in range(longest):    print(str1[start+i],end=' ')            


 

0 0