самая длинная общая последовательность вместо слова

Трудный метод:

var s = "dasdnk asd, (naks) :d skldma";
var a = s.replace('(',' ').replace(')',' ').replace(',',' ').split(' ');
console.log(a);//["dasdnk", "asd", "naks", ":d", "skldma"]
-2
задан ps3790 13 July 2018 в 18:51
поделиться

1 ответ

Я думаю, вы заблудились в своем 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

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

0
ответ дан CodeNStuff 17 August 2018 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: