其他分享
首页 > 其他分享> > Leecode32 longest-valid-parentheses

Leecode32 longest-valid-parentheses

作者:互联网

题目描述

给出一个仅包含字符’(‘和’)'的字符串,计算最长的格式正确的括号子串的长度。
对于字符串"(()“来说,最长的格式正确的子串是”()",长度为2.
再举一个例子:对于字符串")()())",来说,最长的格式正确的子串是"()()",长度为4.

分析

java代码

import java.util.*;

public class Solution {
    public int longestValidParentheses(String s) {
        if(s == null || s.length() <= 1){return 0;}
        
        char arr [] = s.toCharArray();
        int max = 0;
        int index = 0;
        int leftmost = -1;
        
        //装放下标
        Stack <Integer> stack = new Stack<>();
        for(; index < arr.length; index++){
            if(arr[index] == '('){
                stack.push(index);
            }else{
                // ) 情况
                if(!stack.isEmpty()){
                    //出栈
                    int temp = stack.pop();
                    if(!stack.isEmpty()){
                        max = Math.max(index - stack.peek(),max);
                    }else{
                        max = Math.max(index - leftmost,max);
                    }
                }else{
                    leftmost = index;
                }
            }
        }
        
        return max;
    }
}

标签:index,parentheses,下标,max,括号,valid,longest,leftmost,stack
来源: https://blog.csdn.net/weixin_40300702/article/details/104917713