top of page
Search
Writer's pictureCoding Camp

Longest Valid Parentheses

Updated: Apr 6, 2021

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

Constraints:

  • 0 <= s.length <= 3 * 104

  • s[i] is '(', or ')'.

Solution:


class Solution {
    public int longestValidParentheses(String s) {
        if(s==null || s.length() == 0)
            return 0;
        
        Stack<Integer> stack = new Stack<>();
        for(int i=0;i<s.length();i++)
        {
            if(!stack.isEmpty() && s.charAt(i)==')' && s.charAt(stack.peek())=='(')
                stack.pop();
            else stack.push(i);
        }
        int index=-1;
        int max=0;
        for(int i:stack)
        {
            max=Math.max(max,i-index-1);
            index=i;
        }
        max=Math.max(max,s.length()-index-1);
        return max;
        
    }
}

115 views0 comments

Recent Posts

See All

Smallest String With A Given Numeric Value

The numeric value of a lowercase character is defined as its position (1-indexed) in the alphabet, so the numeric value of a is 1, the...

Comments


bottom of page