Трудный метод:
var s = "dasdnk asd, (naks) :d skldma";
var a = s.replace('(',' ').replace(')',' ').replace(',',' ').split(' ');
console.log(a);//["dasdnk", "asd", "naks", ":d", "skldma"]
Я думаю, вы заблудились в своем 2-мерном списке, который не нужен. Вы можете просто использовать оператор in
, который указывает, что строка может быть найдена в другой. Тогда единственная проблема состоит в том, чтобы создать все подстроки одного из ваших входов.
def sliding_window(seq, width):
"""yields all substrings of `seq` of length `width`"""
return (seq[idx:idx+width] for idx in range(len(seq)-width+1))
def lcw(seq1, seq2):
"""length of the longest common sequence shared by seq1 and seq2"""
max_width = min(len(seq1), len(seq2))
for width in range(max_width, 0, -1):
if any(sub in seq1 for sub in sliding_window(seq2, width)):
return width
return 0
lcw('zxab', 'yzab')
>>>
2
Но это очень хорошо, может быть, я не получил ваше подвое слово определения, которое я действительно не мог отличить от подпоследовательности.