括號的最大嵌套深度 | Easy |LeetCode#1614. Maximum Nesting Depth of the Parentheses
題目敘述

Constraints:
1 <= s.length <= 100
s consists of digits 0-9 and characters ‘+’, ‘-‘, ‘*’, ‘/‘, ‘(‘, and ‘)’.
It is guaranteed that parentheses expression s is a VPS.
題目難度:
Easy題目敘述: 給定一個有效的括號字串
s,回傳括號nesting的深度
這裡有效的意思就代表不會有類似這種字串出現
)()()(())(,一定會是閉合成對的括號
解法
一開始的想法
這題很簡單,從想解法(畫在平板上)到最後Submission Accept花了11分鐘。
首先要想的問題會是: 如何判斷nesting parentheses? 我認為只要有連續的左邊未閉合括號出現,就能夠判斷出nesting深度。因此要做的事情就是當出現左括號 ( 就 push 進 stack,當出現右括號就 pop出stack,這些操作進行的同時記錄下stack的數量變化,最大值即為深度。

我的解法
1 | class Solution { |
說明
- 主要都跟上面想法一樣,透過一個整數變數
maxDepth來紀錄counter的變化 - 當
counter值比當前maxDepth還要大時,更新 maxDepth
執行結果

完整本地測試程式碼
1 |
|
複雜度分析
時間複雜度
本題時間複雜度主要取決於對輸入字符串 s 的遍歷。使用了 for 迴圈來遍歷字串中的每一個字元,並對每個字元進行了常數時間的操作(push、pop、counter加減等)。因此操作會是 $O(n)$,其中 $n$ 是字符串的長度。
空間複雜度
空間複雜度主要取決於使用的Stack。最壞情況下,Stack中可能會包含所有的左括號 (,這樣的情況會發生在所有的開括號 ( 都在字串的前半部分,而所有的右括號 ) 都在字串的後半部分。此時,Stack的大小最多為 $n/2$,因此空間複雜度為 $O(n)$。
此外,使用了額外的變數 counter 和 maxDepth,它們的空間複雜度是 O(1)。
綜合來看空間複雜度為 $O(n)$










