就长度而言,Python中的LCS只是交集函数吗?

时间:2019-06-01 13:17:28

标签: python function sorting lcs

我试图让一个代码返回两个字符串之间的最长公共子字符串的长度,并意识到插入部分函数返回的结果几乎相同。我说得对吗?

a = input()
b = input()
print (len(set(a).intersection(b)))

1 个答案:

答案 0 :(得分:0)

否,因为您的单词的交集会将单个字母分解为一个列表元素。例如,

a = 'abcd'
b = 'dcba'

成为

a = ['a', 'b', 'c', 'd']
b = ['d', 'c', 'b', 'a']

相交的长度将为4,但这不适用于您的情况,因为'abcd'和'dcba'的公共子字符串长度均不超过长度1。

此外,在单词上使用set会删除单词中所有重复的字母,这也会使搜索常见的子字符串变得混乱。

您需要做的是将两个单词拆分为所有可能的子字符串的列表,就像在post中所做的那样。然后,您可以对这些列表进行交集并采用最大长度的元素。