philosyang.com

32. Longest Valid Parentheses

 1class Solution:
 2    def longestValidParentheses(self, s: str) -> int:
 3
 4        lefts = rights = 0
 5        longest = 0
 6
 7        for ch in s:
 8            if ch == "(":
 9                lefts += 1
10            else:
11                rights += 1
12            if lefts == rights:
13                longest = max(longest, 2 * rights)
14            elif lefts < rights:
15                lefts = rights = 0
16
17        lefts = rights = 0
18
19        for ch in s[::-1]:
20            if ch == "(":
21                lefts += 1
22            else:
23                rights += 1
24            if lefts == rights:
25                longest = max(longest, 2 * rights)
26            elif lefts > rights:
27                lefts = rights = 0
28
29        return longest

#String #Python