给定一个只包含小括号的序列,它们有的是匹配的,有的不匹配。请你在这个序列中加入若干个左括号或右括号后使之匹配,并让添加后的序列长度尽可能短。
时间: 2023-06-19 12:10:21 浏览: 104
括号匹配问题
假设原序列长度为n,那么最多需要添加n/2个左括号或右括号才能使其匹配。因此,我们可以考虑暴力枚举添加的左括号和右括号的个数,然后判断是否能够使序列匹配。
具体来说,我们可以从左到右遍历原序列,用一个计数器cnt记录当前未匹配的左括号的个数,如果遇到一个左括号,我们就将cnt加1,如果遇到一个右括号,我们就将cnt减1。如果在遍历的过程中,cnt的值小于0,说明当前的右括号没有与左括号匹配,需要添加一个左括号来与之匹配。遍历结束后,如果cnt的值大于0,说明存在未匹配的左括号,需要添加相应数量的右括号来与之匹配。
注意到添加的左括号和右括号的顺序对结果是没有影响的,因此我们可以先尝试添加左括号,再尝试添加右括号,取两种情况中长度更短的序列作为最终结果。
下面给出具体的实现代码:
阅读全文