leetcode 百天解题 - day 59 - 32. 最长有效括号
题目名称
给你一个只包含 ‘(‘ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度
示例
输入:s = “(()”
输出:2
解释:最长有效括号子串是 “()”
题解
利用栈来模拟括号的闭合及左右指针移动的方式
首先定义左右指针left
和right
,并将初始值设置为 0,设置栈 stack 为空数组,利用 push 和 pop 方法模拟栈的输入和输出当遇到左括号时,将左括号的序号记录到stack 中,并移动右指针
当遇到右括号时,首先需要判断栈内是否包含元素,如果不包含元素,此时先记录下有效括号子串的长度,并将左右指针的值记录为右括号序列 +1
如果栈内包含元素 则栈输出一个内容,此时计算一次有效括号子串的长度,右指针 +1遍历完字符串后,如果栈内不包含元素,输出左右指针的差和最大子串长度的最大值
如果包含元素,则将 右指针与栈顶元素序号 求差,并输出最大子串长度的最大值
答案
1 | /** |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
DisqusValine