GuilinDev

Lc1614

05 August 2008

1614 Maximum Nesting Depth of the Parentheses

这题引用了括号是否合法的那题的思路,不用管它其他的字符,只需要记录(和)就可以了。 遍历每一个字符,如果是(,就压入栈中,如果是)就弹出栈顶元素。 用一个max记录栈的最大值,遍历所有字符串之后返回max即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
    public int maxDepth(String s) {
        Deque<Character> stack = new LinkedList<>();
        char[] arr = s.toCharArray();
        int len = arr.length;
        if(len==0){
            return 0;
        }
        int max=0;
        for(char c: arr){
            if(c==')'){
                stack.pollLast();
            }else if(c=='('){
                stack.offer(c);
            }
            max = Math.max(max,stack.size());
        }
        return max;
    }
}

使用depth变量表示括号的深度,使用max变量记录depth的最大值。 遍历字符串中的字符 遇到(,depth加1,更新最大值 遇到),depth减1 返回max。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public int maxDepth(String s) {
    //括号的深度
    int depth = 0;
    //最大深度
    int max = 0;
    for (char c : s.toCharArray()) {
        if (c == '(') {
            //深度加1
            depth++;
            //更新最大值
            max = Math.max(depth, max);
        } else if (c == ')') {
            //深度减1
            depth--;
        }
    }
    return max;
}