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

最长的括号子串

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

import java.util.*;


public class Solution {
    /**
     *
     * @param s string字符串
     * @return int整型
     */
     /**
    思路:保证栈中 只有栈底为最后的一个右括号,其余的位置只能放左括号

    遍历字符串
        如果当前字符是左括号加入栈中
        如果当前字符是右括号 则判断栈的大小
        如果栈的大小<=1 ,表示栈底要么没有元素 要么存在一个右括号
        将栈底元素更新为最新的右括号。
        如果栈的大小>1 ,表示栈中除了栈底的最右括号以外 还有一些左括号 那么把那些左括号弹出来 与右括号配对然后更新res值
      */
    public int longestValidParentheses (String s) {
        // write code here
        Stack<Integer> stack = new Stack<Integer>();

        stack.add(-1); //为满足最后一个右括号下标 我们将-1加入栈中
        int n = s.length();
        int res = 0;
        for (int i = 0 ; i < n ; i++) {
            if (s.charAt(i) == '(') {
                stack.add(i);
            } else {
                if (stack.size() > 1) {
                    stack.pop();
                    res = Math.max(res, i - stack.peek());
                }else {
                    stack.clear();
                    stack.add(i);
                }
            }
        }

        return res;
    }
}

全部评论

相关推荐

头像
04-17 09:29
已编辑
湖南农业大学 后端
睡姿决定发型丫:本硕末9也是0offer,简历挂了挺多,只有淘天 美团 中兴给了面试机会,淘天二面挂,美团一面kpi面,中兴一面感觉也大概率kpi(虽然国企,但一面0技术纯聊天有点离谱吧)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务