题解 | #最长的括号子串#

最长的括号子串

http://www.nowcoder.com/practice/45fd68024a4c4e97a8d6c45fc61dc6ad

import java.util.*;


public class Solution {
    /**
     * 
     * @param s string字符串 
     * @return int整型
     */
    public int longestValidParentheses (String s) {
        // write code here
        if (s == null || s.length() < 2) {
            return 0;
        }

        int len = s.length();

        int[] dp = new int[len]; // 存储到此下标及包括下标字符在内的最大括号子串长度
        char[] ss = s.toCharArray();

        int res = 0;

        for (int i = 1; i < len; i++) {
            if (ss[i] == ')') {
                int pre = i - dp[i - 1] - 1;
                if (pre >= 0 && ss[pre] == '(') {
                    dp[i] = dp[i - 1] + 2; // 如果匹配上就+2
                    if (pre - 1 >= 0) {
                        dp[i] += dp[pre - 1]; // 还能把相邻的最长子串一起纳入,这就是dp维护到此下标包含下标最长子串的好处
                    }

                    res = Math.max(res, dp[i]); // 更新最大值
                }
            }
        }

        return res;
    }
}
全部评论

相关推荐

面了这么多场试,总有公司总喜欢压力面一个小时面试+手撕,哪里不会就点哪里,说了不会不会还继续追着问不尊重求职者,稍微有些细节记不清了,就开始怀疑项目真实性以及人格让求职者开摄像头但是自己不开,说话声音还贼小,pardon几次就开始不耐烦的不知道这个算不算,手撕的时候,面试官人跑了。。。最后快结束才来
一纸丿繁华丶:你换位思考一下,自己在职场被领导push麻了,身心俱疲,现在有个机会让你放松一下,体验一把上位者的感觉,还能看着那些高学历人才、未来自己的竞争者,抓耳挠腮、手足无措的样子,没给你当场笑出来就不错了,理解一下面试官吧。
点赞 评论 收藏
分享
04-27 08:59
常州大学 Java
牛客139242382号:《两门以上汇编语言》
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务