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

最长的括号子串

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

<?php


/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param s string字符串 
 * @return int整型
 */
function longestValidParentheses( $s )
{
    $maxlen=0;
    //记录最长匹配长度
    $maxbox=[-1];
    //记录的堆栈 记录最后匹配位数 用于计算最大长度
   for($i=0;$i<strlen($s);$i++){
       if($s[$i]=='('){
           //首先判断这一位字数是不是(
          array_push($maxbox,$i);
           //如果是'(',将这一位的序号入栈,加到maxbox的末尾
       }else{
           if(count($maxbox)>1){//判断这个括号b的面前有没有一个'('可以让他抵消 
                array_pop($maxbox);
                //如果有就弹出最后一个 因为最后一个不是最后匹配项了
                $maxlen=$maxlen>$i-$maxbox[count($maxbox)-1]?$maxlen:$i-$maxbox[count($maxbox)-1];
                //如果有就表示可以将最大字符加一位,如果加一位后大于历史记录的最大匹配长度 则用现在的长度替换之前的长度
           }else{
               $maxbox[count($maxbox)-1]=$i;
               //如果没有对应的'('和他抵消 代表到这里匹配失效了 将这一位的序号入栈 算作最后匹配位数 接下来的按照这里序号来的计算长度
           }
       }
   }
    return $maxlen;

}



#解题#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-24 13:32
点赞 评论 收藏
分享
07-20 12:08
已编辑
江南大学 图像识别
机械牛马勇闯秋招:把校园经历里面做过的项目,大作业,课设,毕设啥的,扩写,写成具体的项目经历,自我评价缩写别占篇幅,不然这简历真没东西,初筛都过不了
点赞 评论 收藏
分享
07-09 20:50
门头沟学院 Java
码农索隆:1.教育背景和荣誉证书合二为一。 2.获奖项目理一遍,你做了什么,对你求职的岗位有什么帮助,没有就删掉。 3.技能特长和教育背景交换位置。 4.技能特长写的太差,上网上找简历参考。都不用问你别的,一个redis就能把你问住,写写你具体会redis哪些方面的知识。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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