1111. 有效括号的嵌套深度

题目太长了,我就不贴上来了

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-nesting-depth-of-two-valid-parentheses-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

欢迎来到一日一题的阅读理解,刚开始看到这个题,
What are you talking about?
琢磨题目意思,看了下官解,
正所谓交卷五分钟,阅题两小时

下面开始我们的阅读理解,哦不,解题:
请先忘记你之前看到的题目。
我们先分析这句话“ 使 max(depth(A), depth(B)) 的可能取值最小”
意思就是A与B的长度是差不多的,我把奇数位给A,偶数位给B,就会几乎等长了。

括号 ( ( ( ) ) ( ) )
下标 0 1 2 3 4 5 6 7
深度 1 2 3 3 2 2 2 1
结果 1 0 1 1 0 0 0 1

由上表格我们可以发现,括号的深度为奇数的时候给A,标识为1,偶数给B,标识为0,所以我们只要遇到左括号深度 +1,遇到右括号后需要闭合,因为之前深度多加了1所以我们减去一个深度,下面看代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public int[] maxDepthAfterSplit(String seq) {
int[] arr = new int[seq.length()];
/*char c = 0;
for (int i = 0; i < seq.length(); i++) {
c = seq.charAt(i);
arr[i] = c == '(' ? (i) & 1 : (i + 1) & 1;
}*/
int d = 1, i = 0;
for (char c: seq.toCharArray()) {
if (c == '(') {
// 深度 +1, 判断当前深度是给A还是B
arr[i++] = d++ % 2;
} else {
// 括号闭合,深度 -1
arr[i++] = --d % 2;
}
}
return arr;
}
}

最后,这个题官方说了,答案不唯一(也就说结果的0和1是可以颠倒的),所以无论哪种形式都是对的。