问题:给定字符串s'(',')'和小写英文字符,要求删除最小括号,即在任何位置的'('或')',以使所得的括号字符串有效并返回。
解答:形式上,括号字符串在以下情况下才有效:它是空字符串,仅包含小写字符;它可以写为AB(与B串联的A),其中A和B是有效字符串;它可以写为(A),其中A是有效字符串。
例1
例2
思路:这类问题可以利用堆栈来处理括号,注意把不符合规则的留在堆栈里面。最后遍历一遍数组,从后往前,把对应位置的括号去掉就可以了。时间复杂度为 O ( n )。
代码清单3-4 通过最小移除操作得到有效的括号
运行结果: