返回
衡量进步尺度:刷题记录32——最长有效括号,编程实力提升有迹可循
后端
2023-10-17 00:04:16
1. 审题与理解
首先,我们先来审清题意。本题要求我们使用栈来实现括号的有效性验证,并找出最长有效括号的长度。什么是有效括号?有效括号是指左右括号成对出现,并且顺序正确。举个例子,()()
和(())
都是有效括号,而)(
和(()
都不是有效括号。
2. 算法思路
有了对题意的清晰理解,接下来我们就来设计算法思路。我们可以使用栈来解决这个问题。栈是一种先进后出的数据结构,它可以让我们方便地压入和弹出元素。具体而言,我们可以用栈来存储左括号的位置。当遇到右括号时,如果栈顶是左括号,则可以将它们配对并弹出。如果栈顶不是左括号,则说明当前的括号不匹配,不是有效括号。我们记录最长有效括号的长度,并持续更新,直到题目结束。
3. 代码实现
根据上述算法思路,我们就可以实现代码了。这里我使用Python语言进行代码实现:
def longest_valid_parentheses(s):
stack = []
max_length = 0
start = -1
for i in range(len(s)):
if s[i] == '(':
stack.append(i)
else:
if stack:
if s[stack[-1]] == '(':
stack.pop()
if not stack:
max_length = max(max_length, i - start)
else:
max_length = max(max_length, i - stack[-1])
else:
start = i
return max_length
s = ")()())"
print(longest_valid_parentheses(s)) # 输出:4
4. 测试与分析
运行上面的代码,我们可以得到最长有效括号的长度。在本例中,输入字符串为")()())",最长有效括号的长度为4。我们可以通过测试不同输入字符串来验证代码的正确性。
5. 总结与提升
通过这道题,我们掌握了使用栈来验证括号有效性的方法,并能求出最长有效括号的长度。这道题不仅考察了我们的算法设计能力,也考察了我们对栈数据结构的理解和运用。在今后的编程学习和工作中,我们可以尝试更多的刷题,不断提升自己的编程实力。
在编程的道路上,刷题记录是我们成长的见证。每一道刷过的题,都是我们知识和经验的累积。相信通过坚持不懈的努力,我们一定能够成为一名优秀的程序员!