Является ли LCS в Python просто функцией пересечения по длине? - PullRequest
0 голосов
/ 01 июня 2019

Я пытался отфильтровать код, который возвращает длину самой длинной общей подстроки между двумя строками, и понял, что функция вставки возвращает почти то же самое.Я прав?

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

1 Ответ

0 голосов
/ 01 июня 2019

Нет, потому что пересечение ваших слов будет разбивать отдельные буквы на элементы списка.Например,

a = 'abcd'
b = 'dcba'

становится

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

Длина пересечения будет 4, но это не правильно для вашего случая, поскольку у 'abcd' и 'dcba' нет общегоподстрока длиннее длины 1.

Кроме того, использование set для слова удалит все дублирующиеся буквы в вашем слове, что также приведет к путанице при поиске общих подстрок.

Что вам нужно сделатьвместо этого это что-то вроде разделения двух слов на списки всех возможных подстрок, например, что сделано в этом посте .Затем вы можете пересечь эти списки и взять элемент наибольшей длины.

...