码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode Longest Valid Parentheses

时间:2015-02-02 14:03:33      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:

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.

对于这道题,用动态规划方法时间超时,后来看了别人的解法

建立一个栈,用来保存(的位置信息,同时用一个符号表示第一个(的位置信息,如果遇到(就压站,如果遇到)且栈不为空的时候就弹出,并判断弹出后是否为空,若为空则最大长度为i-左括号起始位置,若不为空则减去peek的位置

 1 package Longest.Valid.Parentheses;
 2 
 3 import java.util.Stack;
 4 
 5 public class LongestValidParentheses {
 6 
 7     /**
 8      * @param args
 9      */
10     public static void main(String[] args) {
11         // TODO Auto-generated method stub
12         LongestValidParentheses service=new LongestValidParentheses();
13         //String s=")()())";
14         String s="()(()";
15         //String s="()";
16         int a=service.longestValidParentheses(s);
17         System.out.println(a);
18     }
19     public int longestValidParentheses(String s) {
20         int len=s.length();
21         Stack<Integer> stack=new Stack<Integer>();
22         char[] charArray=s.toCharArray();
23         int maxCount=0;
24         int firstleft=-1;
25         for(int i=0;i<len;i++){
26             if(charArray[i]==‘(‘)
27             {
28                 stack.push(i);
29             }else{
30                 if(!stack.isEmpty()){
31                 stack.pop();
32                 if(stack.isEmpty()){
33                     maxCount=Math.max(maxCount, i-firstleft);
34                 }else{
35                     maxCount=Math.max(maxCount, i-stack.peek());
36                 }
37                 }else{
38                     firstleft=i;
39                 }
40             }
41         }
42         return maxCount;
43     }
44 }

 

Leetcode Longest Valid Parentheses

标签:

原文地址:http://www.cnblogs.com/criseRabbit/p/4267556.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!