蓝桥杯官网练习题(正则问题)-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
题目描述
考虑一种简单的正则表达式
只由 x ( ) | 组成的正则表达式。
小明想求出这个正则表达式能接受的最长字符串的长度。
例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是 xxxxxx长度是 6。
输入描述
一个由 x()| 组成的正则表达式。输入长度不超过 100保证合法。
输出描述
这个正则表达式能接受的最长字符串的长度。
输入输出样例
示例
输入
((xx|xxx)x|(x|xx))xx
输出
6
运行限制
import java.util.Scanner;
public class Main {
static int index=-1;
static Scanner scan = new Scanner(System.in);
static String str=scan.next();
public static void main(String[] args) {
System.out.println(dfs());
}
public static int dfs(){
int max=Integer.MIN_VALUE;
int count=0;
while(index<str.length()-1){
index++;
if(str.charAt(index)=='('){
count+=dfs();
}
else if(str.charAt(index)=='x'){
count++;
}
else if(str.charAt(index)=='|'){
max=Math.max(max,count);
count=0;
}
else if(str.charAt(index)==')'){
break;
}
}
return Math.max(max,count);
}
}
-
- 最大运行时间1s
- 最大运行内存: 256M