zoukankan      html  css  js  c++  java
  • LeetCode 32 最长有效括号

    题目给的是一个只含有(和)的字符串,问最长的包含有效括号的字串长度,也就是这个字串要满足所有括号匹配。这道题的标签给的有动态规划,但是似乎并没有用上,我的思路是设一个数组dp,dp[i]表示以i结尾的字符串有多少个连续的有效括号对,更新公式是如果以i-1结尾的匹配上的字符串的前一个字符是'(',且当前字符是')',那么就匹配上了,dp[i]=dp[i-1]+1,然后再去检测当前字符串是否可以和之前的字符串连上,如果连上就加上之前的dp的值,具体可见代码。

    class Solution {
    public:
        int longestValidParentheses(string s) {
            int dp[15005]={0};
            int len=s.length(),ans=0,now,pos;
            for(int i=1;i<len;i++)
            if(s[i]==')')
            {
                now = dp[i-1];
                pos = i-now*2-1;
                if(pos>=0&&s[pos]=='(')
                {
                    dp[i]=now+1;
                }
                pos = i-dp[i]*2;
                if(pos>=0&&dp[pos]>=0)
                {
                    dp[i]+=dp[pos];
                }
                ans=max(dp[i],ans);
            }
            return ans*2;
        }
    };
    
  • 相关阅读:
    asp.net mvc 缓存
    C#版 Socket编程(最简单的Socket通信功能)
    c# 读取嵌入式文件
    js 对象 copy 对象
    double截取小数点位数
    c#读取excel
    观察者设计模式
    xml序列化方式
    sicily Huffman coding
    sicily Fibonacci 2
  • 原文地址:https://www.cnblogs.com/ambition-hhn/p/12959663.html
Copyright © 2011-2022 走看看