# 000032-Longest-Valid-Parentheses

### Problem

<https://leetcode.com/problems/longest-valid-parentheses/description/>

Given a string containing just the characters '(' and ')', return the length of the longest valid (well-formed) parentheses substring .

Example 1:

Input: s = "(()" Output: 2 Explanation: The longest valid parentheses substring is "()".

Example 2:

Input: s = ")()())" Output: 4 Explanation: The longest valid parentheses substring is "()()".

Example 3:

Input: s = "" Output: 0

Constraints:

0 <= s.length <= 3 \* 104 s\[i] is '(', or ')'.

### Solution

using stack to keep track index of every '('

```python
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_len
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://snowan.gitbook.io/study-notes/leetcode/python/000032-longest-valid-parentheses.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
