Sunday, March 21, 2021

Longest Valid Parentheses

Given a string containing just the characters '(' and ')', find 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
Solution:

public int longestValidParentheses(String s) {

        int maxans = 0;

        Stack<Integer> stack = new Stack<>();

        stack.push(-1);

        for (int i = 0; i < s.length(); i++) {

            if (s.charAt(i) == '(') {

                stack.push(i);

            } else {

                stack.pop();

                if (stack.empty()) {

                    stack.push(i);

                } else {

                    maxans = Math.max(maxans, i - stack.peek());

                }

            }

        }

        return maxans;

    }

No comments:

Post a Comment