题目描述
考虑一种简单的正则表达式:
只由 x ( ) | 组成的正则表达式。
小明想求出这个正则表达式能接受的最长字符串的长度。
例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是 6。
输入描述
一个由 x()| 组成的正则表达式。输入长度不超过 100,保证合法。
输出描述
这个正则表达式能接受的最长字符串的长度。
输入输出样例
示例
输入
((xx|xxx)x|(x|xx))xx
输出
6
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
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);
}
}
文章讲述了如何使用深度优先搜索算法计算由x()和|组成的正则表达式的最长接受字符串长度,以给定的输入((xx|xxx)x|(x|xx))xx为例,输出结果为6。
1269

被折叠的 条评论
为什么被折叠?



