921. 最少插入使括号有效

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

给定一个括号字符串,通过最少插入操作使其有效。遍历字符串时,用`balance`记录括号平衡,`additions`记录需要插入的括号数。当`balance`为负时,增加`additions`并重置`balance`。遍历结束后,若`balance`大于0,将其加到`additions`。时间复杂度为O(n),空间复杂度为O(1)。

🎯

关键要点

  • 括号字符串有效的条件包括:空字符串、可以写成AB(A与B的连接),或可以写成(A)(A是有效字符串)。
  • 给定一个括号字符串s,通过插入括号使其有效,返回所需的最少操作次数。
  • 使用变量balance记录当前括号的平衡,additions记录需要插入的括号数。
  • 遍历字符串时,如果遇到'(',balance加1;遇到')',balance减1。
  • 当balance为负时,表示闭括号多于开括号,需要增加一个开括号,additions加1并重置balance为0。
  • 遍历结束后,如果balance大于0,表示有未匹配的开括号,将其加到additions中。
  • 该算法的时间复杂度为O(n),空间复杂度为O(1)。

延伸问答

如何判断一个括号字符串是否有效?

一个括号字符串有效的条件包括:空字符串、可以写成AB(A与B的连接),或可以写成(A)(A是有效字符串)。

如何计算使括号字符串有效所需的最少插入次数?

通过遍历字符串,使用balance记录括号平衡,additions记录需要插入的括号数,最终返回additions的值。

在遍历括号字符串时,如何处理多余的闭括号?

当balance为负时,表示闭括号多于开括号,需要增加一个开括号,additions加1并重置balance为0。

如果字符串以多个开括号开始,如何计算插入次数?

如果遍历结束后balance大于0,表示有未匹配的开括号,将其加到additions中。

该算法的时间复杂度和空间复杂度是多少?

该算法的时间复杂度为O(n),空间复杂度为O(1)。

给定字符串'())',需要插入多少个括号才能使其有效?

需要插入1个括号才能使字符串'())'有效。

➡️

继续阅读