題目
(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