问题:
代码:
import static java.lang.Math.max;
public class test1{
public static void main(String[] args) {
Integer dep = maxDepth("{}()[]((()){})");
System.out.println(dep);//打印结果为3
}
public static Integer maxDepth(String brackets){
String bracketsCopy = brackets;
int leng = brackets.length();
//1.如果括号不是成对出现,是无效字符串
if(leng%2 !=0) {
return 0;
}
//2. 判断括号是否是一一对应
int num = leng/2;
while(num > 0){
bracketsCopy = bracketsCopy.replace("{}","").replace("[]","").replace("()","");
num --;
}
int depth = 0;
int zuokuohao = 0;
int youkuohao = 0;
//3. 如果同时满足一一对应,换算成同一种括号计算
if(bracketsCopy.length() ==0){
brackets = brackets.replace('{','(').replace('}',')').replace('[','(').replace(']',')');
for(int i=0;i<leng;i++){
if(brackets.charAt(i) =='('){
zuokuohao ++;
}else if(brackets.charAt(i) ==')'){
youkuohao++;
}
depth = max(depth, zuokuohao-youkuohao);
}
return depth;
}else{
return 0;
}
}
}