网络编程
位置:首页>> 网络编程>> Python编程>> python实现求两个字符串的最长公共子串方法

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

作者:chimuuu  发布时间:2021-08-02 21:14:08 

标签:python,字符串,子串

如下所示:


# coding:utf-8
'''
求两个字符串的最长公共子串
思想:建立一个二维数组,保存连续位相同与否的状态
'''

def getNumofCommonSubstr(str1, str2):

lstr1 = len(str1)
lstr2 = len(str2)
record = [[0 for i in range(lstr2+1)] for j in range(lstr1+1)] # 多一位
maxNum = 0   # 最长匹配长度
p = 0    # 匹配的起始位

for i in range(lstr1):
 for j in range(lstr2):
  if str1[i] == str2[j]:
   # 相同则累加
   record[i+1][j+1] = record[i][j] + 1
   if record[i+1][j+1] > maxNum:
    # 获取最大匹配长度
    maxNum = record[i+1][j+1]
    # 记录最大匹配长度的终止位置
    p = i + 1
return str1[p-maxNum:p], maxNum

if __name__ == '__main__':
str1 = raw_input()
str2 = raw_input()

res = getNumofCommonSubstr(str1, str2)
print res

输出结果:字符串str1中的第一个最长公共子串(若有重复)

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

来源:https://blog.csdn.net/C_Donald/article/details/77247758

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com