最长有效括号
题目描述
给你一个只包含 '('
和 ')'
的字符串,找出最长有效(格式正确且连续)括号子串的长度。
示例 1:
输入:s = “(()”
输出:2
解释:最长有效括号子串是 “()”
示例 2:
输入:s = “)()())”
输出:4
解释:最长有效括号子串是 “()()”
示例 3:
输入:s = “”
输出:0
提示:
0 <= s.length <= 3 * 104
s[i]
为'('
或')'
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我的答案
1 | func longestValidParentheses(s string) int { |
做的第一道 hard 题,二十几分钟搞定,100% 94%
解题思路
1.记录每个符号的状态,(
一律对应于0
;)
如果能够和前面的配上对,就记录为2
,否则,记录为0
1 | ) ( ( ) ( ) ) ) ( ( ( ( ( ) ) ) ) ( |
形成记录
1 | 0 0 0 2 0 2 2 0 0 0 0 0 0 2 2 2 2 0 |
2.从左往右检查 record,如果 record[i] == 2, record[j] == 0,且 record[j+1:i] 中没有 0,则 record[i] = 1, record[j] = 1,那么,上面的 record 就变成了
1 | 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 |
3.统计record中,最多的连续为1的次数,就是结果。
题解
1 | func longestValidParentheses(s string) int { |
总结
- 根据记录统计,往往是最清晰的
Comments
Comment plugin failed to load
Loading comment plugin