import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static int pos = -1; // 充当charAt下标
static String s = null;//字符串型的静态变量
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
s = scanner.nextLine();//输入正则表达式
System.out.println(dfs());//输出结果
scanner.close();
}
private static int dfs() {//dfs方法,来解决实际问题
int current = 0;//目前x的最大个数
int max = 0;//最终x的最大个数
while (pos < s.length() - 1){//遍历整个正则表达式,这里length()是因为
pos++;
if(s.charAt(pos) == '('){ //进入下一层
current += dfs(); //叠加长度,利用了回溯的方法
}else if(s.charAt(pos) == 'x'){//累计x的个数
current++;
}else if(s.charAt(pos) == '|'){//取最大值
max = Math.max(current,max);
current = 0;//但是目前的x最大值变为0
}else { //遇到) 跳出本轮循环
break;
}
}
return Math.max(max,current);//输出最大的x个数
}
}
蓝桥杯真题:正则问题
最新推荐文章于 2024-05-28 18:00:00 发布