如何在Python中从两个以上的字符串中找出最长的公共子字符串

如何在Python中从两个以上的字符串中找出最长的公共子字符串?

本文将介绍如何在Python中从两个以上的字符串中找出最长的公共子字符串。

找到 最长公共子字符串 的唯一方法是使用最长公共子字符串算法。我们将定义一个函数,接受2个字符串,然后迭代比较两个字符串并查找公共子序列并计算长度。

我们将通过迭代计算子序列的长度,来检查整个字符串并返回最长的公共子序列。如果两个给定字符串之间没有任何公共子序列,则返回一个空字符串。

阅读更多:Python 教程

示例

在下面给出的示例中,我们将2个字符串作为输入,并展示了最长公共子序列算法的实现方法,以及查找最长公共子序列 −

def longest_common_substring(str1, sub):
   m = [[0] * (1 + len(sub)) for i in range(1 + len(str1))]
   longest, x_longest = 0, 0
   for x in range(1, 1 + len(str1)):
      for y in range(1, 1 + len(sub)):
         if str1[x - 1] == sub[y - 1]:
            m[x][y] = m[x - 1][y - 1] + 1
            if m[x][y] > longest:
               longest = m[x][y]
               x_longest = x
            else:
               m[x][y] = 0
   return str1[x_longest - longest: x_longest]

str1 = "欢迎来到教程点"
print("给定的字符串为 ")
print(str1)

sub1 = "教程"
print("第一个子字符串为")
print(sub1)
print("“",str1,"”和“",sub1,"”之间的最长公共子序列是")
print(longest_common_substring(str1, sub1))

sub2 = "12345"
print("第二个子字符串为")
print(sub2)
print("“",str1,"”和“",sub2,"”之间的最长公共子序列是")
print(longest_common_substring(str1, sub2))

输出

以下是上述代码的输出 −

给定的字符串为
欢迎来到教程点
第一个子字符串为
教程
“ 欢迎来到教程点 ”和“ 教程 ”之间的最长公共子序列是教程
1
第二个子字符串为
12345
“ 欢迎来到教程点 ”和“ 12345 ”之间的最长公共子序列是

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程