给你一个只包含 (
和 )
的字符串,找出最长有效(格式正确且连续)括号子串的长度。
示例 1:
输入:s = "(()" 输出:2 解释:最长有效括号子串是 "()"
示例 2:
输入:s = ")()())" 输出:4 解释:最长有效括号子串是 "()()"
示例 3:
输入:s = "" 输出:0
提示:
-
0 <= s.length <= 3 * 104
-
s[i]
为(
或)
使用栈记录左右括号的下标,做匹配,同时用于标注“占位符”的状态。遍历完成后,统计占位符中的数量,找出最大长度。
官方题解中的栈,除了栈,不需要额外空间,把前置下标放入栈中,用于统计长度,解法非常巧妙。
- 一刷
-
link:{sourcedir}/_0032_LongestValidParentheses.java[role=include]
-
32. 最长有效括号 - 官方题解 — 官方题解中的栈,除了栈,不需要额外空间,把前置下标放入栈中,用于统计长度,解法非常巧妙。