平衡括号字符串的最少插入次数
目录
平衡括号字符串的最少插入次数
题目:
https://leetcode-cn.com/problems/minimum-insertions-to-balance-a-parentheses-string/
思路:
本题和前面的题属于同一系列的,都是平衡括号字符串,不过这个不是1:1 而是1:2
思路还是差不多,不过判断条件需要改变
代码:
class Solution:
def minInsertions(self, s: str) -> int:
= 0,0
res,temp for i in s:
if i == '(':
+= 2
temp if temp % 2 == 1:
+= 1
res -= 1
temp if i == ')':
-= 1
temp if temp == -1:
+= 1
res = 1
temp return res + temp
开始还是初始化,temp代表需求的右括号的数量
如果有左括号的话,则让右括号的需求+2 因为一个左对应两个右
这里有个难点,如果需求的是奇数的话,则应添加一个右括号,然后让需求减1
如果是右括号,则需求 减1 如果需求的成了-1 的话 则在左边补上左括号 res++ 此时还需要一个右括号,则temp再初始化为1
最后还是输出
Q:为什么最后不是 temp == -2 res += 1 temp=0 呢?
看看这个例子:
")))))))"
这是7个右括号,最后减到最后的话,temp是个负数,影响了最后的结果。
所以还是要用原来的那样,-1的时候就进行判断,不用考虑奇偶的问题了