Menu
CoddyTech

Longest Valid Parentheses

Otrzymujesz ciąg znaków s składający się wyłącznie ze znaków ( i ). Znajdź najdłuższy podciąg (ciąg kolejnych znaków), który jest poprawnie uformowany: każdy znak ( jest w nim zamykany przez późniejszy znak ), a pary są prawidłowo zagnieżdżone, jak w (()()). Zwróć długość tego podciągu lub 0, jeśli nie występuje nawet ().

Funkcja

longestValidParentheses(s: string) → integer
sstring
ciąg znaków zawierający znaki ( i )
Zwracainteger
długość najdłuższego poprawnie sformowanego podciągu lub 0, jeśli taki nie istnieje

Ograniczenia

  • 1 ≤ s.length ≤ 6 × 104
  • Każdy znak w s to ( albo ).

Przykłady

Wejście
s = "()(())"
Wyjście
6
Wyjaśnienie
Cały ciąg jest poprawnie utworzony: (), po którym następuje (()). Dwa poprawnie utworzone fragmenty obok siebie tworzą jeden poprawnie utworzony fragment, więc odpowiedzią jest cały ciąg 6 znaków.

lock icon+21 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Czy możesz też podać, gdzie zaczyna się najdłuższy poprawnie sformowany podciąg, wybierając ten najbardziej z lewej, jeśli kilka ma taką samą długość?

Zresetuj kod
def longestValidParentheses(s):
    # Wpisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

s = "()(())"

Oczekiwane

6