字符串中的平衡圆括号

fumotvh3  于 2021-07-08  发布在  Java
关注(0)|答案(0)|浏览(306)

我在hackerrank里面玩,我试过一个关于平衡括号的问题。
问题:给定一个由左括号和右括号组成的字符串,“(”和“)”,根据需要插入括号来平衡括号。确定必须插入的最小字符数。只需返回必须插入的括号数。而且字符串将只包含括号(这就是为什么我没有特别检查右括号)
我的思维过程:确定开括号和闭括号的数目。返回两者之差的绝对值。不幸的是,它失败了两个测试用例,我不知道为什么。
我的解决方案

public static int getMin(String s) {
// Write your code here
    int leftPar = 0;
    int rightPar = 0;

    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) == ')') {
            rightPar++;
        }            
        else {
            leftPar++;
        }
    }

    return Math.abs(rightPar - leftPar);

}

我的解决方案有什么问题导致它在某些情况下失败?
有效的黑客银行解决方案:

public static int getMin(String s) {
// Write your code here
    int bal = 0;
    int ans = 0;
    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) == '(') bal++;
        else bal--;

        if (bal == -1) {
            ans++;
            bal++;
        }
    }
    return bal + ans;

}

样本输入:

pars = "()))))))))))))))))))))))()()))()))))))))()))))))()))()))))(()))))))))))))()))))))(()))))))))()()))))))))))))()))))(())()))))))(()))))()))))))()))()())))())))))))))))()))())(()()())()()())))))()))))())()))()))))))))))))))()())))()))))()))))))()))())()))())))(()))()))))))))())))())))(())()))))()((()))))))((((()())())())(())))))())())))))))())))))()(()))))()))))())))))()())())()))()))))))))()))))))))))()))))())))))(((()))))()))((())))())))))))())))()()())())))))())))())())))))(())())))))))())))()()))))))))))))(())())())))((()))))))(())))()())))()))))(())))(())))))))))))))(())))(())()))))(()))())())))))))()())(()(())())))))))))))))))))))))))((()())))())))())))((()())))()))())()))))())()())))))))))))(()))))))))))))))()))))))()))))))))))))))))(()(()))(()))()))))))()))()()))))))))))()))())()))))())))()()()))()))))(())))))))))))))()()))))(())))()))))))()))()())()))())()())())))()()(()())))))()())))))))())))())))(())))())))))))()))))))))()((()(())))))))))(())))())))())))))))))()())))()))))))))("

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题