Menu
CoddyTech

Longest Common Substring

Вам даны две строки: s1 и s2. Подстрока — это непрерывная последовательность букв из строки, например ork из clockwork. Найдите самую длинную подстроку, общую для s1 и s2, и верните её длину. Если в обеих строках нет ни одной общей буквы, ответ — 0.

Функция

longestCommonSubstring(s1: string, s2: string) → integer
s1string
первая строка
s2string
вторая строка
Возвращаетinteger
длина самого длинного блока букв, найденного в обеих строках

Ограничения

  • 1 ≤ s1.length ≤ 1000
  • 1 ≤ s2.length ≤ 1000
  • s1 и s2 состоят из строчных букв английского алфавита.

Примеры

Ввод
s1 = "clockwork"s2 = "workshop"
Вывод
4
Пояснение
work завершает clockwork и начинает workshop, поэтому это общая подстрока длиной 4, и более длинного фрагмента, который встречается в обоих, нет.
challenge icon

Дополнительный вопрос

Можете ли вы проверить, существует ли общая подстрока заданной длины L, примерно за O(n + m) с помощью скользящего хеша, а затем выполнить бинарный поиск по L?

Сбросить код
def longestCommonSubstring(s1, s2):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

s1 = "clockwork"
s2 = "workshop"

Ожидаемый вывод

4