package com.interview.algorithms.stackqueue; import java.util.Stack; /** * Created_By: stefanie * Date: 14-11-8 * Time: 下午4:12 */ public class C7_10_LongestValidParetheses { public static String longestValidParentheses(String s) { String max = ""; Stack<String> stack = new Stack<String>(); for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); if (ch == '(') stack.push("("); else { String prev = ""; String current = ""; while (!stack.empty()) { prev = stack.pop(); current = prev + current; if (prev == "(") { stack.push(current + ")"); break; } } if (current.length() > max.length()) max = current; } } String current = ""; while (!stack.empty()) { String item = stack.pop(); if (item != "(") current = item + current; else { if (current.length() > max.length()) max = current; current = ""; } } if (current.length() > max.length()) max = current; return max; } }