最少插入括号数使字符串有效 — 括号匹配问题详解
题目描述
给定一个只包含括号 '('
和 ')'
的字符串 s
,我们定义字符串的有效性如下:
- 空字符串是有效的。
- 若字符串
A
和B
都是有效的,那么连接字符串AB
也是有效的。 - 若字符串
A
是有效的,那么"(A)"
也是有效的。
现在,我们可以在字符串的任意位置插入任意个括号,目的是使字符串最终变成有效的括号串。请你计算并返回使字符串 s
变为有效所需插入的最少括号数。
解题分析
该问题是括号匹配的变形,要求最少补充括号使得最终字符串符合括号的有效性规则。括号匹配通常用栈来判断,但这里我们需要统计最少补充量。
核心思路
- 使用一个计数器
balance
表示当前未匹配的左括号数量。 - 遍历字符串:
-
- 遇到
'('
,balance
增加 1。 - 遇到
&#
- 遇到