05 August 2008
这题引用了括号是否合法的那题的思路,不用管它其他的字符,只需要记录(和)就可以了。 遍历每一个字符,如果是(,就压入栈中,如果是)就弹出栈顶元素。 用一个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;
}