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.
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

Test #1

Test #2

Test #3

Argument

s = "()(())"

Oczekiwany wynik

6