32 Longest Valid Parentheses

转载 2016年05月31日 22:10:04

文字分析部分摘自

http://blog.csdn.net/zhangwei1120112119/article/details/16812679



求最长的括号匹配的子串

比如

())()()的括号匹配的子串为(),()()两个,最长的长度为4

解法:

维护一个栈,栈底值为上次匹配失败的位置

首先初始放一个-1入栈代表上次匹配失败的地方为-1

依次扫描字符

若为'(',将位置放入栈中

若为')',若栈中元素大于1个,则代表有'('可匹配,更新最优值,否则更新栈底

显然,对于任意一个部分最长子串,其最后一个字符更新时取的是上一次匹配失败的位置,故所有部分最长子串取得最优结果


public static int longestValidParentheses(String s)
	{
		int len = s.length();
		if (len < 2)
			return 0;

		Stack<Integer> stack = new Stack<>();
		stack.push(-1);
		int ret = 0;
		for (int i = 0; i < len; i++)
		{
			if (s.charAt(i) == '(')
				stack.push(i);
			else
			{
				if (stack.size() > 1)
				{
					stack.pop();
					ret = Math.max(ret, i - stack.peek());
				} 
				else
				{
					stack.pop();
					stack.push(i);
				}
			}
		}
		return ret;
	}


相关文章推荐

LeetCode_32---Longest Valid Parentheses

Longest Valid Parentheses  Total Accepted: 36685 Total Submissions: 176120My Submissions Quest...

[LeetCode]32.Longest Valid Parentheses

题目Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (w...

leetcode 32. Longest Valid Parentheses

leetcode 32. Longest Valid Parentheses 算法就是从左向右扫描,遇到左括号就入栈,遇到右括号有三种情况: 1.栈顶是左括号,那么用2取代那个左括号,这时如果栈顶下边...

LeetCode (32) Longest Valid Parentheses

题目Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (w...
  • fly_yr
  • fly_yr
  • 2015年09月28日 14:19
  • 258

Leetcode #32. Longest Valid Parentheses 最长括号对 结题报告

1 结题思想题目会给出一定的“((())))”等的括号对,问你说最长的有效括号对是多长?这道题,需要用Stack,并且不能单纯的统计(或),且出栈,其大致有如下的规则:1、遇到(要压栈当前位置 2、...
  • MebiuW
  • MebiuW
  • 2016年04月03日 23:06
  • 450

leetcode32_Longest Valid Parentheses

一.问题描述 Given a string containing just the characters '(' and ')', find the length of the longest ...

[Leetcode] 32. Longest Valid Parentheses 解题报告

题目: Given a string containing just the characters '(' and ')', find the length of the longest val...

LeetCode | 32. Longest Valid Parentheses——最长有效括号匹配长度

Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (wel...

LeetCode 32 Longest Valid Parentheses 最大合法括号匹配长度计算 动态规划算法有待学习

Longest Valid Parentheses Given a string containing just the characters '(' and ')', find the len...

leetcode-32. Longest Valid Parentheses

leetcode-32. Longest Valid Parentheses - 如果是左括号就将当前位置压人栈, - 如果是右括号就判断当前栈是否为空, - 如果是空则说明之前数据违法...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:32 Longest Valid Parentheses
举报原因:
原因补充:

(最多只允许输入30个字)