000032-Longest-Valid-Parentheses
Problem
Solution
class Solution:
def longestValidParentheses(self, s: str) -> int:
max_len = 0
# init with a start index
stack = [-1]
for idx in range(len(s)):
# when encounter of '(', put index into stack, keep track of index of '('
if s[idx] == '(':
stack.append(idx)
else:
# when encounter ')', pop out top index
stack.pop()
# if stack is empty (notice already init -1), indicates no valid cases at this point, continue
if not stack:
stack.append(idx)
else: # if stack not empty, keep tracking max_length of the valid cases
max_len = max(max_len, idx - stack[-1])
return max_lenLast updated