題目出處
1541. Minimum Insertions to Balance a Parentheses String
難度
medium
題目分類
String, Stack, Greedy, Bracket Sequences
2026-10-09 一刷
個人範例程式碼 - 一刷 (2026/10/09)
class Solution:
def minInsertions(self, s: str) -> int:
ans = 0
left, right = 0, 0
for c in s:
if c == '(':
if right % 2 == 1: # 需要 two consecutive ), 出現 ( 需要立即補一個變回偶數
ans += 1
right += 1
left += 1
else: # ')'
right += 1
if left*2 < right: # add '('
ans += 1
left += 1
return ans + (left * 2 - right) # add ')'
算法說明
處理括號再加上一些奇偶性的判斷,主要是一個「(」需要配兩個「)」,
還有題目要注意兩個「)」必須要連續「))」,這邊處理要小心,不能留到最後才一次處理。
Time Complexity
O(n)
Space Complexity
O(1)