题目链接https://leetcode-cn.com/problems/maximum-nesting-depth-of-two-valid-parentheses-strings/
有一组括号,让我们分为离散的两组,这两组的深度最大值最小。
输入:seq = "()(())()"
输出:[0,0,0,1,1,0,1,1]
分析
首先我们把所有括号的所在层数求出来,处于同一层的括号肯定是能够相互匹配的。
想要两组的深度尽量小,最简单的方式就是,把奇数层的括号放在一组,偶数层的括号放在一组。这样分离后,两组的深度最大只会差1。
下面给出了括号序列 (()(())()) 在每一个字符处的嵌套深度:
括号序列 ( ( ) ( ( ) ) ( ) )
下标编号 0 1 2 3 4 5 6 7 8 9
嵌套深度 1 2 2 2 3 3 2 2 2 1
嵌套深度为奇数层即 第1层 和 第3层 组合起来就是2层,分配给A,嵌套深度为偶数层即 第2层 总共1层,分配给B。
注意是根据嵌套深度分层的,处在同一层组合起来都是没有嵌套的。
( ) //第1层
()( )() //第2层
() //第3层
通过栈来实现括号匹配来计算每个括号的嵌套深度。
维护一个栈 s,从左至右遍历括号字符串中的每一个字符:
如果当