給定乙個由 『(』 和 『)』 括號組成的字串 s,我們需要新增最少的括號( 『(』 或是 『)』,可以在任何位置),以使得到的括號字串有效。
從形式上講,只有滿足下面幾點之一,括號字串才是有效的:
給定乙個括號字串,返回為使結果字串有效而必須新增的最少括號數。
示例 1:
輸入:"())"
輸出:1
示例 2:
輸入:"((("
輸出:3
示例 3:
輸入:"()"
輸出:0
示例 4:
輸入:"()))(("
輸出:4
根據題目描述可知,括號有效的規則是每乙個(
都有乙個對應的)
,但不要求左右括號是相鄰的。因此,只需要在新增了(
或)
後使得字串中它們的數量相等即可。
使用兩個變數left
和right
來表示新增左括號和右括號的數量,遍歷整個字串:
遍歷結束後,返回left + right
即滿足要求的最少新增的括號數。
class
solution
:def
minaddtomakevalid
(self, s:
str)
->
int:
ifnot s or s =='':
return
0 left, right =0,
0for i in
list
(s):
if i ==
'(':
right +=
1if i ==
')':
right -=
1if right ==-1
: right =
0 left +=
1return left + right
921 使括號有效的最少新增
給定乙個由 和 括號組成的字串 s,我們需要新增最少的括號 或是 可以在任何位置 以使得到的括號字串有效。從形式上講,只有滿足下面幾點之一,括號字串才是有效的 它是乙個空字串,或者 它可以被寫成 ab a 與 b 連線 其中 a 和 b 都是有效字串,或者 它可以被寫作 a 其中 a 是有效字串。給...
leetcode 921 使括號有效的最少新增 棧
描述 給定乙個由 和 括號組成的字串 s,我們需要新增最少的括號 或是 可以在任何位置 以使得到的括號字串有效。從形式上講,只有滿足下面幾點之一,括號字串才是有效的 它是乙個空字串,或者 它可以被寫成 ab a 與 b 連線 其中 a 和 b 都是有效字串,或者 它可以被寫作 a 其中 a 是有效字...
LeetCode921 使括號有效的最少新增
給定乙個由 和 括號組成的字串 s,我們需要新增最少的括號 或是 可以在任何位置 以使得到的括號字串有效。從形式上講,只有滿足下面幾點之一,括號字串才是有效的 它是乙個空字串,或者 它可以被寫成 ab a 與 b 連線 其中 a 和 b 都是有效字串,或者 它可以被寫作 a 其中 a 是有效字串。給...