返回

小白勇闯 LeetCode:21. 删除最外层括号

前端

LeetCode 21:删除最外层括号

踏上 LeetCode 21 的征途,我们将探索一个与括号有关的迷人编程挑战。在这段旅程中,我们将深入理解如何将复杂问题分解成简单子任务,逐步揭示谜题的答案。让我们一起投身这场精彩的算法之旅!

理解题目要求

题目要求我们删除给定字符串中最外层的括号。让我们先举个例子来直观理解一下:

输入:"(())()"
输出:"()"

在这个例子中,最外层的括号是 (()),删除它们之后,我们得到 (),这就是我们要找的答案。

解题思路

如何才能解决这个问题呢?我们可以使用以下步骤:

  1. 遍历字符串,记录当前的括号深度。
  2. 当我们遇到一个左括号时,将括号深度加 1。
  3. 当我们遇到一个右括号时,将括号深度减 1。
  4. 如果括号深度为 0,则说明我们遇到了最外层的括号,可以将其删除。

代码实现

有了清晰的解题思路,我们就可以将其转化为代码了。使用 Python 语言,我们可以这样实现:

def remove_outer_parentheses(s):
    """
    删除给定字符串中最外层的括号。

    Args:
        s: 输入字符串。

    Returns:
        删除最外层括号后的字符串。
    """

    result = ""
    depth = 0
    for char in s:
        if char == '(':
            if depth > 0:
                result += char
            depth += 1
        elif char == ')':
            depth -= 1
            if depth > 0:
                result += char

    return result

代码解读

def remove_outer_parentheses(s):
    """
    删除给定字符串中最外层的括号。

    Args:
        s: 输入字符串。

    Returns:
        删除最外层括号后的字符串。
    """

    result = ""
    depth = 0
    for char in s:
        if char == '(':
            if depth > 0:
                result += char
            depth += 1
        elif char == ')':
            depth -= 1
            if depth > 0:
                result += char

    return result
  1. 首先,我们定义了一个空字符串 result 来存储最终结果。

  2. 接下来,我们定义了一个整数 depth 来记录当前的括号深度,初始值为 0。

  3. 然后,我们使用一个 for 循环来遍历字符串 s 中的每个字符 char

  4. 在循环中,我们根据 char 的值来判断当前的括号深度是增加还是减少。

  5. 如果 char 是左括号 (,则将 depth 加 1。

  6. 如果 char 是右括号 ),则将 depth 减 1。

  7. 如果 depth 的值大于 0,则说明当前的括号不是最外层的括号,我们将其添加到 result 中。

  8. 最后,我们返回 result 作为删除最外层括号后的字符串。

结语

经过一番努力,我们终于攻克了 LeetCode 21:删除最外层括号。通过这个挑战,我们不仅学会了解决一个编程难题,还培养了我们分解问题、分析问题和解决问题的能力。希望大家继续保持对编程的热情,不断挑战自己,不断进步!