LeetCode—32 Longest Valid Parentheses

来源:互联网 发布:m20火箭筒数据 编辑:程序博客网 时间:2024/05/22 10:23

思路:建立一维数组vals[],vals[i]表示从i开始(包含该字符)到结尾,这个数组的合法括号长度。然后从倒数第二个字符开始读,读到‘(’检测其后面的vals[i+1]个位置是否为‘)’,如果是,则表明正好构成了一个新的合法括号,用该值加上2,再加上该值后面一个数,即截断后剩下的字符串能够成的最大合法长度。

public class Solution {    public int longestValidParentheses(String s) {        int length=s.length();        if (length==0) {return 0;}        int ans=0;        char[] c=s.toCharArray();        int[] vals=new int[length];        for (int i = length-2; i >= 0; i--) {        if (c[i]=='(') {int t=i+1+vals[i+1];if (t<length&&c[t]==')') {vals[i]=vals[i+1]+2;vals[i]+=((t+1<length)?vals[t+1]:0);ans=ans<vals[i]?vals[i]:ans;}}}        return ans;    }}


0 0
原创粉丝点击