zoukankan      html  css  js  c++  java
  • Longest Valid Parentheses

    Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring.

    For "(()", the longest valid parentheses substring is "()", which has length = 2.

    Another example is ")()())", where the longest valid parentheses substring is "()()", which has length = 4.

     维护一个栈,最初栈添加一个Node(')', -1)。

    if (s.charAt(i) == ')'  )

      if (&& 栈顶为 '(')

      '(' 出栈 计算长度 Math.max( max,  i - stack.peek().下标)

      计算长度时是当前下标,和'(' 前一个元素下标的差值;

      else 

        ')' 入栈

    else

      '(' 入栈

    class Node{
        int i;
        char c;
       public Node(char c, int i){
           this.i = i;
           this.c = c;
       }
    }
    public class Solution {
        public int longestValidParentheses(String s) {
            int len = s.length();
            int max = 0;
            Stack<Node> nStack = new Stack<Node>();
            nStack.push(new Node(')', -1));
            for(int i = 0; i< len; i++){
                char c = s.charAt(i);
                if(c == '('){
                    nStack.push(new Node(c, i));
                }else{
                    Node n = nStack.peek();
                    if(n.c == '('){
                        nStack.pop();
                        max = Math.max(max, i - nStack.peek().i);
                    }else{
                        nStack.push(new Node(c,i));
                    }
                }
            }
            
            return max;
        }
    }
  • 相关阅读:
    Web前端学习笔记之BootStrap
    js 闭包解决方案
    函数节流简要解析
    js 观察者模式
    arguments解析
    js 职责链模式简要介绍
    js 工厂模式简要介绍
    jsonp跨域总结
    算法复杂度
    正则表达式的$
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3552032.html
Copyright © 2011-2022 走看看