Leetcode刷题记——32. Longest Valid Parentheses(最长有效括号)
来源:互联网 发布:smt贴片机编程 编辑:程序博客网 时间:2024/06/11 16:37
一、题目叙述:
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.
Subscribe to see which companies asked this question
二、解题思路:
本题即求最长有效括号序列长度,我自己想了好久, 没想出来,最后参考了别人的想法。
1、使用栈,遇到左括号,把左括号的下标入栈。
2、遇到右括号时,
(1)若此时栈内为空,则将序列开始标识start变为i + 1(说明之前有效括号序列终止重新开始)
(2)若此时栈不空,则出栈,若此时栈为空,计算有效序列长度为 i - start + 1,更新记录max;若此时栈不空,则计算有效序列长度为i - 栈顶元素值,更新记录max。
(3)最后max值即为最长有效括号序列长度。
三、源码:
import java.util.LinkedList;public class Solution{ public int longestValidParentheses(String s) { LinkedList<Integer> stack = new LinkedList<Integer>(); int start = 0, max = 0; for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == '(') stack.addFirst(i);//左括号入栈 else if (s.charAt(i) == ')')//若为右括号 { if (stack.size() == 0) start = i + 1; else { stack.removeFirst(); if (stack.size() == 0) { if (i - start + 1 > max) max = i - start + 1; } else { if (i - stack.getFirst() > max) max = i - stack.getFirst(); } } } } return max; } public static void main(String[] args) { Solution sol = new Solution(); String s = ")()())"; System.out.println(sol.longestValidParentheses(s)); } }
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 32. Longest Valid Parentheses 最长有效括号长度
- Leetcode刷题记——20. Valid Parentheses (有效的括号即括号匹配)
- 最长连续有效括号 Longest Valid Parentheses @LeetCode
- LeetCode--Longest Valid Parentheses(最长有效的括号)
- LeetCode | Longest Valid Parentheses(最长有效的括号匹配)
- LeetCode OJ 之 Longest Valid Parentheses (最长有效括号)
- LeetCode 32 Longest Valid Parentheses(最长有效括号)(*)
- [LeetCode]—Longest Valid Parentheses 最长括号匹配
- Longest Valid Parentheses 最长的有效括号
- [LeetCode] 最长合法括号 longest valid parentheses
- 【LeetCode】最长括号匹配Longest Valid Parentheses
- 栈——longest-valid-parentheses(最长有效括号长度)
- LeetCode: Longest Valid Parentheses (求最长有效匹配括号子串的长度)
- 普通最大子段和
- Java中普通代码块,构造代码块,静态代码块区别及代码示例
- 理解 Keystone 的四种 Token
- 精通二叉排序树
- 使用urllib和BeautifulSoup怕取维基百科的数据
- Leetcode刷题记——32. Longest Valid Parentheses(最长有效括号)
- JAVA IO流的操作-----将一个文件夹中Html文件转为JSP文件
- java中异或^运算符的运用
- linux install mysql
- 包含RecyclerView的module导入项目出现的问题
- 面对机会,最缺的是把握
- SQLite导出整个数据库/导出某个表到SQL文件
- new operator,operator new and replacement new
- PE 301 Nim (Nim博弈)