• 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;
        }
    }
  • 相关阅读:
    Jsp的内置标签和jstl标签
    Jsp中的EL表达式
    JSP和servlet结合案例
    Jsp:内置对象和四种域对象的理解
    编码实战Web端联系人的增删改查
    Session案例
    Cookie案例分析
    会话数据的保存——cookie
    ServletContext和ServletConfig
    Servlet(1)
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3552032.html
Copyright © 2020-2023  润新知