返回
小白勇闯 LeetCode:21. 删除最外层括号
前端
2024-01-18 15:58:01
LeetCode 21:删除最外层括号
踏上 LeetCode 21 的征途,我们将探索一个与括号有关的迷人编程挑战。在这段旅程中,我们将深入理解如何将复杂问题分解成简单子任务,逐步揭示谜题的答案。让我们一起投身这场精彩的算法之旅!
理解题目要求
题目要求我们删除给定字符串中最外层的括号。让我们先举个例子来直观理解一下:
输入:"(())()"
输出:"()"
在这个例子中,最外层的括号是 ((
和 ))
,删除它们之后,我们得到 ()
,这就是我们要找的答案。
解题思路
如何才能解决这个问题呢?我们可以使用以下步骤:
- 遍历字符串,记录当前的括号深度。
- 当我们遇到一个左括号时,将括号深度加 1。
- 当我们遇到一个右括号时,将括号深度减 1。
- 如果括号深度为 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
-
首先,我们定义了一个空字符串
result
来存储最终结果。 -
接下来,我们定义了一个整数
depth
来记录当前的括号深度,初始值为 0。 -
然后,我们使用一个
for
循环来遍历字符串s
中的每个字符char
。 -
在循环中,我们根据
char
的值来判断当前的括号深度是增加还是减少。 -
如果
char
是左括号(
,则将depth
加 1。 -
如果
char
是右括号)
,则将depth
减 1。 -
如果
depth
的值大于 0,则说明当前的括号不是最外层的括号,我们将其添加到result
中。 -
最后,我们返回
result
作为删除最外层括号后的字符串。
结语
经过一番努力,我们终于攻克了 LeetCode 21:删除最外层括号。通过这个挑战,我们不仅学会了解决一个编程难题,还培养了我们分解问题、分析问题和解决问题的能力。希望大家继续保持对编程的热情,不断挑战自己,不断进步!