前往
大廳
主題

LeetCode - 1614. Maximum Nesting Depth of the Parentheses 解題心得

Not In My Back Yard | 2023-03-13 12:00:40 | 巴幣 0 | 人氣 217

題目連結:


題目意譯:
一字串如果滿足以下條件之一,則其為一個合法的括號字串(以 VPS 稱呼):
其為一個空字串,或是一個不等於 "(" 或 ")" 的單一字元;
其可以被寫為 AB (A 串接著 B)之形式,其中 A 和 B 皆為 VPS;
或是其可以被寫為 (A) 之形式,其中 A 為一個 VPS。

我們可以簡單地定義任何一個 VPS S 的巢狀深度 depth(S) 為以下:
depth("") = 0、
depth(C) = 0,其中 C 為一個只有一個不等於 "(" 或 ")" 的單一字元所組成之字串、
depth(A + B) = max(depth(A), depth(B)),其中 A 和 B 皆為 VPS、
depth("(" + A + ")") = 1 + depth(A),其中 A 為一個 VPS。

例如,"" 、 "()()" 和 "()(()())" 皆為 VPS(巢狀深度依序為 0 、 1 和 2),而 ")(" 和 "(()" 則不是 VPS。

給定一個 VPS 稱為字串 s,回傳 s 的巢狀深度。

限制:
1 ≦ s.length ≦ 100
s 由數字 0 ~ 9 以及字元 '+' 、 '-' 、 '×' 、 '/' 、 '(' 或 ')' 所組成。
保證 s 中的括號表示式為合法的。



範例測資:
範例 1:
輸入: s = "(1+(2×3)+((8)/4))+1"
輸出: 3
解釋: 數字 8 位於字串中 3 層的巢狀括號中。

範例 2:
輸入: s = "(1)+((2))+(((3)))"
輸出: 3


解題思維:
以前有提及過要如何檢查一個括號字串是否合法(參見這題),該方式通常會需要一個變數來統計「目前還有多少左括號尚未配對」,而這個變數在當前位置的數值實際上即代表字串中該位置的巢狀深度。

因此按照平常檢查括號字串的方式,然後取過程中統計用的變數之最大值即為所求。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作