Menu
CoddyTech

Longest Common Substring

Otrzymujesz dwa ciągi znaków: s1 i s2. Podciąg to nieprzerwany ciąg liter pobrany z ciągu znaków, na przykład ork z clockwork. Znajdź najdłuższy podciąg wspólny dla s1 i s2 i zwróć jego długość. Jeśli żadna litera nie występuje w obu ciągach, odpowiedzią jest 0.

Funkcja

longestCommonSubstring(s1: string, s2: string) → integer
s1string
pierwszy ciąg znaków
s2string
drugi ciąg znaków
Zwracainteger
długość najdłuższego bloku liter występującego w obu ciągach

Ograniczenia

  • 1 ≤ s1.length ≤ 1000
  • 1 ≤ s2.length ≤ 1000
  • s1 i s2 składają się z małych liter alfabetu angielskiego.

Przykłady

Wejście
s1 = "clockwork"s2 = "workshop"
Wyjście
4
Wyjaśnienie
work zamyka clockwork i otwiera workshop, więc jest wspólnym podciągiem o długości 4 i żaden dłuższy fragment nie występuje w obu.
challenge icon

Pytanie dodatkowe

Czy możesz przetestować, czy istnieje wspólny podciąg o danej długości L w czasie około O(n + m), używając haszowania kroczącego, a następnie przeprowadzić wyszukiwanie binarne po L?

Zresetuj kod
def longestCommonSubstring(s1, s2):
    # Napisz kod tutaj

Test #1

Test #2

Test #3

Argumenty

s1 = "clockwork"
s2 = "workshop"

Oczekiwany wynik

4