最大公共子串问题的Python解法
2017-09-06 20:57
507 查看
求两个字符串的最大公共子字符串问题是个经典的问题了,下面给出Python的解法。
输出结果:
def find_lcsubstr(s1, s2): m = [[0 for i in range(len(s2) + 1)] for j in range(len(s1) + 1)] #print("m",m)# 生成0矩阵,为方便后续计算,比字符串长度多了一列 mmax = 0 # 最长匹配的长度 p = 0 # 最长匹配对应在s1中的最后一位 for i in range(len(s1)): for j in range(len(s2)): if s1[i] == s2[j]: m[i + 1][j + 1] = m[i][j] + 1 if m[i + 1][j + 1] > mmax: mmax = m[i + 1][j + 1] p = i + 1 return s1[p - mmax:p], mmax # 返回最长子串及其长度 print(find_lcsubstr('abcdfg', 'abdfg'))
输出结果:
('dfg', 3)
相关文章推荐
- 最长公共子串问题的后缀数组解法
- java实现字符串匹配问题之求两个字符串的最大公共子串
- 最长公共子串问题的后缀数组解法
- 最长公共子串问题的后缀数组解法
- 最大K个数问题的Python版解法总结
- 经典问题LCS(最大公共子串问题)C代码实现
- 最大公共子串问题
- 最长公共子串问题的后缀数组解法
- 最大K个数问题的Python版解法总结
- 最大公共连续子串(LCS问题)
- 最长公共子串问题的后缀数组解法
- java实现字符串匹配问题之求两个字符串的最大公共子串
- 2017年A组蓝桥杯(最大公共子串问题)【动态规划】
- 最大公共子串问题
- 最长公共子串问题的后缀数组解法
- 最长公共子串问题的后缀数组解法
- 动态规划 字符串最大公共子序列以及最大公共子串问题LCS
- 史上最全最丰富的“最长公共子序列”、“最长公共子串”问题的解法与思路
- 最大公共子串长度问题