LeetCode 32. Longest Valid Parentheses(最长有效括号)
来源:互联网 发布:中文msds数据库 编辑:程序博客网 时间:2024/05/20 04:14
原题网址:https://leetcode.com/problems/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.
方法:用from来表示当前有效的开始点,即一旦出现根本无法匹配的情况,from将向前推进。用栈来保存左括号的坐标,每配对成功一个就出栈一个。
public class Solution { public int longestValidParentheses(String s) { int[] stack = new int[s.length()]; int size = 0; int max = 0; int from = 0; for(int i=0; i<s.length(); i++) { if ('(' == s.charAt(i)) stack[size++] = i; else if (size==0) from = i+1; else { int p = stack[--size]; if (size==0) { max = Math.max(max, i-from+1); } else { max = Math.max(max, i-stack[size-1]); } } } return max; }}
另一种实现:
public class Solution { public int longestValidParentheses(String s) { char[] sa = s.toCharArray(); int[] pos = new int[sa.length+1]; int max = 0; int size = 0; pos[size++] = -1; for(int i=0; i<sa.length; i++) { if (sa[i] == '(') { pos[size++] = i; } else if (size > 1) { size --; max = Math.max(max, i-pos[size-1]); } else { pos[0] = i; } } return max; }}
另一种实现:
public class Solution { public int longestValidParentheses(String s) { char[] sa = s.toCharArray(); int[] stack = new int[sa.length]; int size = 0; int from = 0; int max = 0; for(int i = 0; i < sa.length; i++) { if (sa[i] == '(') { stack[size++] = i; } else if (size == 0) { from = i + 1; } else if (size == 1) { max = Math.max(max, i - from + 1); size--; } else { size--; max = Math.max(max, i - stack[size - 1]); } } return max; }}
0 0
- LeetCode 32. Longest Valid Parentheses(最长有效括号)
- LeetCode----32. Longest Valid Parentheses(最长有效括号)
- LeetCode-32.Longest Valid Parentheses最长有效括号子串
- leetcode 32. Longest Valid Parentheses 最长有效括号长度
- LeetCode 32 Longest Valid Parentheses(最长有效括号)(*)
- LeetCode--Longest Valid Parentheses(最长有效的括号)
- LeetCode | Longest Valid Parentheses(最长有效的括号匹配)
- LeetCode OJ 之 Longest Valid Parentheses (最长有效括号)
- 最长连续有效括号 Longest Valid Parentheses @LeetCode
- Longest Valid Parentheses 最长的有效括号
- Longest Valid Parentheses(最长有效括号串)
- Leetcode刷题记——32. Longest Valid Parentheses(最长有效括号)
- LeetCode | 32. Longest Valid Parentheses——最长有效括号匹配长度
- 【LeetCode-面试算法经典-Java实现】【032-Longest Valid Parentheses(最长有效括号)】
- [LeetCode] 最长合法括号 longest valid parentheses
- 【LeetCode】最长括号匹配Longest Valid Parentheses
- LeetCode: Longest Valid Parentheses (求最长有效匹配括号子串的长度)
- leetcode32 Longest Valid Parentheses 最长有效括号序列
- 编好程序的正确态度
- 第十一周上机实践项目1(3):点-圆-圆柱类族的设计
- oracle数据库怎么新建实例
- java 字符串split有很多坑,使用时请小心!!
- C++作业6
- LeetCode 32. Longest Valid Parentheses(最长有效括号)
- POJ 1125 Floyd最短路入门
- EventBus消息类型重复解决方案
- visual studio 2013(2015)配置opencv 3.1,win10系统(x64)
- iOS跳转麦克风
- 第十一周上机实践项目 项目2-储存班长的学生信息类(1)
- List Set Map 的用法和区别
- 8行代码教你搞定iOS导航控制器全屏滑动返回效果
- Transform的简单使用