返回

衡量进步尺度:刷题记录32——最长有效括号,编程实力提升有迹可循

后端

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. 总结与提升

通过这道题,我们掌握了使用栈来验证括号有效性的方法,并能求出最长有效括号的长度。这道题不仅考察了我们的算法设计能力,也考察了我们对栈数据结构的理解和运用。在今后的编程学习和工作中,我们可以尝试更多的刷题,不断提升自己的编程实力。

在编程的道路上,刷题记录是我们成长的见证。每一道刷过的题,都是我们知识和经验的累积。相信通过坚持不懈的努力,我们一定能够成为一名优秀的程序员!