题目
(LeetCode 1614.括号的最大嵌入深度)
给定 有效括号字符串 s,返回 s 的嵌套深度。嵌套深度是嵌套括号的最大数量。
示例 1:
输入:s = "(1+(2*3)+((8)/4))+1"
输出:3
解释:数字 8 在嵌套的 3 层括号中。
示例 2:
输入:s = "(1)+((2))+(((3)))"
输出:3
解释:数字 3 在嵌套的 3 层括号中。
示例 3:
输入:s = "()(())((()()))"
输出:3
解答
我们使用一个变量`current_depth`来跟踪当前的嵌套深度,用`max_depth`记录遇到的最大深度。
遍历字符串中的每个字符:
- 如果遇到左括号'(',则当前深度加1,并更新最大深度(因为进入了一层新的嵌套)。
- 如果遇到右括号')',则当前深度减1(表示退出一层嵌套)。
- 其他字符(如数字、运算符)不影响深度,直接跳过。
注意:题目保证括号是有效的,所以不会出现不匹配的情况,因此我们不需要检查在减深度时是否会出现负数。
代码实现:
class Solution:def maxDepth(self, s: str) -> int:current_depth = 0max_depth = 0for char in s:if char == '(':current_depth += 1max_depth = max(max_depth, current_depth)elif char == ')':current_depth -= 1return max_depthif __name__ == "__main__":solution = Solution()s = "(1+(2*3)+((8)/4))+1"print(solution.maxDepth(s)) # 输出:3