首页 > 其他 > 详细

最长有效括号

时间:2020-04-22 10:44:26      阅读:62      评论:0      收藏:0      [点我收藏+]

最长有效括号

1.题目

  题目链接:https://leetcode-cn.com/problems/longest-valid-parentheses/

  题目截图

  技术分享图片

2.大致思路

  对于括号配对的问题,很自然的就可以想到利用栈来解决。利用的数据结构是栈。

  例如对于输入“)()())”,从头扫描字符串,如果遇到的是“(”则使其入栈,如果遇到的是“)”则与栈顶元素进行比对,如果配对成功则消去这两个字符,否则入栈。这里计算最长有效括号的长度就是用消去之前的栈顶元素-消去之后的栈顶元素。

  示例:

  技术分享图片

3.相关代码(java)  

class Solution {
    public int longestValidParentheses(String s) {
        //如果栈为空或者输入的字符串长度为0,那么肯定输出为0
        if (s == null || s.length() == 0) {
            return 0;
        }

        int n = s.length();//n用于记录字符串的长度

        char[] sArr = s.toCharArray();//将字符串转换为字符数组的形式,便于对其进行遍历
        Stack<Integer> stack = new Stack<>();//定义一个栈

        int result = 0;//利用result来记录有效括号的长度

        // 在开始扫描前先将-1入栈
        stack.push(-1);

        for (int i = 0; i < n; ++i) {
            //遇到“)”时,栈不为空并且栈顶元素为“(”,进行的操作便是栈顶出栈进行配对,并记录最长有效括号的长度  
            if (sArr[i] == ) && stack.size() > 1 && sArr[stack.peek()] == () { 
                stack.pop(); 
         result = Math.max(result, i - stack.peek()); }
else { stack.push(i); } } return result; } }

 

最长有效括号

原文:https://www.cnblogs.com/xiaona-/p/12750315.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!