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.

    思路:

    我第一反应是想到了栈(不像好多网友第一下想到DP, DP基础还是不够扎实。。。),但是没想到栈里存的是index。后来发现如果发生失配,那么就更新last,表示上一组匹配的括号的结束地址是什么,否则的话就用当前index减去栈顶的index。

    代码:

     1     int max(int a, int b){
     2         if(a > b)
     3             return a;
     4         return b;
     5     }
     6     int longestValidParentheses(string s) {
     7         // IMPORTANT: Please reset any member data you declared, as
     8         // the same Solution instance will be reused for each test case.
     9         int l = s.length();
    10         if(l < 2)
    11             return 0;
    12         int i;
    13         stack<int> Stack;
    14         int result = 0;
    15         int last = -1;
    16         for(i = 0; i < l; i++){
    17             if(s[i] == '('){
    18                 Stack.push(i);
    19             }
    20             else{
    21                 if(Stack.empty()){
    22                     last = i;   
    23                 }
    24                 else{
    25                     Stack.pop();
    26                     if(Stack.empty()){
    27                         result = max(result, i-last);
    28                     }
    29                     else{
    30                         result = max(result, i-Stack.top());
    31                     }
    32                 }
    33             }
    34         }     
    35         return result;
    36     }
  • 相关阅读:
    数据库
    数据库
    数据库
    数据库
    数据库
    数据库
    windows
    LeetCode : Word Pattern
    LeetCode : Perfect Number
    LeetCode : Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/waruzhi/p/3444046.html
Copyright © 2011-2022 走看看