Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1111. Maximum Nesting Depth of Two Valid Parentheses Strings #91

Open
Tcdian opened this issue Apr 1, 2020 · 1 comment
Open

1111. Maximum Nesting Depth of Two Valid Parentheses Strings #91

Tcdian opened this issue Apr 1, 2020 · 1 comment

Comments

@Tcdian
Copy link
Owner

Tcdian commented Apr 1, 2020

1111. Maximum Nesting Depth of Two Valid Parentheses Strings

有效括号字符串 仅由 "(" 和 ")" 构成,并符合下述几个条件之一:

空字符串
连接,可以记作 ABAB 连接),其中 A 和 B 都是有效括号字符串
嵌套,可以记作 (A),其中 A 是有效括号字符串
类似地,我们可以定义任意有效括号字符串 s 的 嵌套深度 depth(S)

s 为空时,depth("") = 0
sAB 连接时,depth(A + B) = max(depth(A), depth(B)),其中 A 和 B 都是有效括号字符串
s 为嵌套情况,depth("(" + A + ")") = 1 + depth(A),其中 A 是有效括号字符串
例如:"""()()",和 "()(()())" 都是有效括号字符串,嵌套深度分别为 0,1,2,而 ")(" 和 "(()" 都不是有效括号字符串。

 

给你一个有效括号字符串 seq,将其分成两个不相交的子序列 A 和 B,且 A 和 B 满足有效括号字符串的定义(注意:A.length + B.length = seq.length)。

现在,你需要从中选出 任意 一组有效括号字符串 A 和 B,使 max(depth(A), depth(B)) 的可能取值最小。

返回长度为 seq.length 答案数组 answer ,选择 A 还是 B 的编码规则是:如果 seq[i] 是 A 的一部分,那么 answer[i] = 0。否则,answer[i] = 1。即便有多个满足要求的答案存在,你也只需返回 一个。

Example 1

Input: seq = "(()())"
Output: [0,1,1,1,1,0]

Example 2

Input: seq = "()(())()"
Output: [0,0,0,1,1,0,1,1]

Note

  • 1 <= seq.size <= 10000
@Tcdian
Copy link
Owner Author

Tcdian commented Apr 1, 2020

Solution

/**
 * @param {string} seq
 * @return {number[]}
 */
var maxDepthAfterSplit = function(seq) {
    let depth = 0;
    const result = [];

    for (let i = 0; i < seq.length; i++) {
        if (seq[i] === '(') {
            depth += 1;
            result.push(depth % 2);
        } else if (seq[i] === ')') {
            result.push(depth % 2);
            depth -= 1;
        }
    }

    return result;
};

@Tcdian Tcdian added the LeetCode label Apr 1, 2020
@Tcdian Tcdian removed the LeetCode label Apr 23, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant