有效括號字串型別與對應的巢狀深度計算方法如下圖所示:
給你乙個「有效括號字串」seq
,請你將其分成兩個不相交的有效括號字串,a
和b
,並使這兩個字串的深度最小。
如果存在多個滿足要求的答案,只需返回其中任意 乙個即可。
輸入:seq = "()(())()" // 0表示分割a,1表示分給b
輸出:[0,0,0,1,1,0,1,1]
解釋:本示例答案不唯一。
本題其實相當於讓a
字串和b
字串的depth
盡可能的接近。為什麼呢?因為seq
對應的棧上,每個左括號都對應乙個深度,而這個左括號,要麼是a
的,要麼是b
的。所以,棧上的左括號只要按奇偶分配給a
和b
就可以啦!
更好理解的思路:啥奇偶規律啊?我咋就沒看出來有這規律呢?別慌,我幫你捋捋更簡單實惠的理解方法。
這題是這樣的,要讓a
和b
的最大深度最小,關鍵就是,a\b
你倆的深度誰都別漲太快。別a
的深度都到10
了,b
還0
深度呢。所以很簡單,漲深度的時候,誰比較淺,我就給誰漲。降的時候,誰比較深,我就給誰降。
啥叫「漲深度」呢?那就是'('
啊,來乙個左括號,那深度就漲一格,所以a/b
誰淺就給誰漲。深度一樣的話呢,就隨便給漲乙個。漲完了你得降啊,啥叫「降深度」呢?那就是右括號啊,右括號來了誰深先降誰。
class
solution
else
}else
if(c ==
')')
else}}
return ans;}}
;
LeetCode 1111 有效括號的巢狀深度
有效括號字串 定義 對於每個左括號,都能找到與之對應的右括號,反之亦然。詳情參見題末 有效括號字串 部分。巢狀深度 depth 定義 即有效括號字串巢狀的層數,depth a 表示有效括號字串 a 的巢狀深度。詳情參見題末 巢狀深度 部分。給你乙個 有效括號字串 seq,請你將其分成兩個不相交的有效...
LeetCode 1111 有效括號的巢狀深度
有效括號字串 定義 對於每個左括號,都能找到與之對應的右括號,反之亦然。詳情參見題末 有效括號字串 部分。巢狀深度 depth 定義 即有效括號字串巢狀的層數,depth a 表示有效括號字串 a 的巢狀深度。詳情參見題末 巢狀深度 部分。有效括號字串型別與對應的巢狀深度計算方法如下圖所示 給你乙個...
leetcode20 python有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...