其他分享
首页 > 其他分享> > LeetCode #1111 有效符号的嵌套深度

LeetCode #1111 有效符号的嵌套深度

作者:互联网

题目描述

分析

u1s1这道题的翻译着实抽象。。。下面是我认为的几个要点:

一段VPS的深度取决于它嵌套的层数,而将一段深度为D的VPS拆分为两段深度分别为DA与DB的子串,会有\(D == DA + DB\)(和套娃一个道理?)
因此要使得\(MAX(depth(A), depth(B))\)最小,理论上需要\(DA=DB=\frac{1}{2}D\),而实际情况中D并不一定能等分为DA与DB,一次让二者尽可能接近即可,
代码中要将seq的每嵌套交替分配给子串A和B

算法设计

程序执行:

C++代码实现:

class Solution {
public:
    vector<int> maxDepthAfterSplit(string seq) {
        vector<int> result;
        short counter = 0;
        int sgn = 0;
        for(int i = 0; i < seq.size(); i++){
            if(seq[i] == '('){
                result.push_back(sgn);
                sgn ^= 1;
                counter ++;
            }
            if(seq[i] == ')'){
                result.push_back(sgn ^ 1);
                counter --;
                if(counter != 0){
                    sgn ^= 1;
                }
            }
        }
        return result;
    }
};

运行结果

标签:子串,seq,counter,1111,嵌套,depth,result,sgn,LeetCode
来源: https://www.cnblogs.com/Nreyab/p/12610657.html