正则问题

考虑一种简单的正则表达式:

只由 x ( ) | 组成的正则表达式。

小明想求出这个正则表达式能接受的最长字符串的长度。

例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6。

输入

一个由x()|组成的正则表达式。输入长度不超过100,保证合法。

输出

这个正则表达式能接受的最长字符串的长度。

例如,

输入:

((xx|xxx)x|(x|xx))xx

程序应该输出:

6

资源约定:

峰值内存消耗(含虚拟机) < 256M

CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

不要使用package语句。不要使用jdk1.7及以上版本的特性。

主类的名字必须是:Main,否则按无效代码处理。

PS:

本题栈的基础应用 思路很简单 ‘(’ ‘x’ ‘|’ 入栈 碰见‘)’然后出栈

出栈的时候 把他们连一起 然后用‘|’进行切割 模拟或运算

留下最长的那个字符串 入栈 最后所有的东西都出栈

在进行上面的操作 不过本题比较坑 括号有不是成对的 吐槽一下 什么破语法

第二个有点问题,错误的我建议也看看,省的下次犯

import java.util.Scanner;

public class 正则问题 {
static int count;
static char[] a = new char[200];
static int p;
static int max =-1;; public static void main(String[] args) {
Scanner in = new Scanner(System.in);
a = in.next().toCharArray();
dfs();
System.out.println(max);
} static int dfs() {
int xnum = 0;
int maxx = 0; while (p < a.length) {
max=Math.max(xnum, max);
max=Math.max(maxx, max);
if (a[p] == 'x') {
p++;
xnum++;
} else if (a[p] == '(') {
p++;
xnum += dfs();
} else if (a[p] == ')') {
p++;
break;
} else if (a[p] == '|') {
p++;
maxx=Math.max(xnum, maxx);
// max=Math.max(maxx, max);
//maxx = Math.max(xnum, maxx);
xnum = 0;
}
max=Math.max(xnum, max);
// max=Math.max(maxx, max);
}
return Math.max(xnum, maxx);
}
}
import java.io.File;
import java.io.FileNotFoundException;
import java.text.ParseException;
import java.util.Scanner; /** * 采用DFS,从前到后遍历遇到(就开始新的搜索,遇到)则停止搜索并通过比较,找出这个括号里的最大值;
* 如果遇到|,则需要记录之前的长度,用于在之后)的比较。遇到x,长度加一,且继续往下找
*
每一个()都是一次dfs,可返回期间最大x数量
*/
public class 编程7正则问题 {
// static Scanner in = new Scanner(System.in);
static int count;
static char[] a = new char[200];
static int p; public static void main(String[] args) throws ParseException, FileNotFoundException {
Scanner in = new Scanner(new File("src/JavaA/s8/7.txt"));
a = in.next().toCharArray();
System.out.println(dfs());
} static int dfs() {
int xnum = 0;
int maxx = 0; while (p < a.length) {
if (a[p] == 'x') {
p++;
xnum++;
} else if (a[p] == '(') {
p++;
xnum += dfs();
} else if (a[p] == ')') {
p++;
break;
} else if (a[p] == '|') {
p++;
maxx=xnum;
//maxx = Math.max(xnum, maxx);
xnum = 0;
}
}
return Math.max(xnum, maxx);
}
}

Java实现第八届蓝桥杯正则问题的更多相关文章

  1. Java实现第八届蓝桥杯购物单

    购物单 题目描述 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打 ...

  2. Java实现第八届蓝桥杯国赛 数字划分

    标题:数字划分 w星球的长老交给小明一个任务: 1,2,3-16 这16个数字分为两组. 要求: 这两组数字的和相同, 并且,两组数字的平方和也相同, 并且,两组数字的立方和也相同. 请你利用计算机的 ...

  3. Java实现第八届蓝桥杯图形排版

    标题:图形排版 小明需要在一篇文档中加入 N 张图片,其中第 i 张图片的宽度是 Wi,高度是 Hi. 假设纸张的宽度是 M,小明使用的文档编辑工具会用以下方式对图片进行自动排版: 1. 该工具会按照 ...

  4. Java实现第八届蓝桥杯魔方状态

    魔方状态 题目描述 二阶魔方就是只有2层的魔方,只由8个小块组成. 如图p1.png所示. 小明很淘气,他只喜欢3种颜色,所有把家里的二阶魔方重新涂了颜色,如下: 前面:橙色 右面:绿色 上面:黄色 ...

  5. Java实现第八届蓝桥杯青蛙跳杯子

    青蛙跳杯子 题目描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里 ...

  6. Java实现第八届蓝桥杯兴趣小组

    兴趣小组 为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组 (以下称A组,B组,C组). 每个小组的学生名单分别在[A.txt],[B.txt]和[C.txt]中. 每个文件中存储的是学生的 ...

  7. Java实现第八届蓝桥杯外星日历

    外星日历 题目描述 某星系深处发现了文明遗迹. 他们的计数也是用十进制. 他们的文明也有日历.日历只有天数,没有年.月的概念. 有趣的是,他们也使用了类似"星期"的概念, 只不过他 ...

  8. java实现第八届蓝桥杯生命游戏

    生命游戏 题目描述 康威生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机. 这个游戏在一个无限大的2D网格上进行. 初始时,每个小方格中居住着一个活着或死了的细胞. 下一时刻每个细胞的 ...

  9. Java实现第八届蓝桥杯9算数式

    9算数式 题目描述 观察如下的算式: 9213 x 85674 = 789314562 左边的乘数和被乘数正好用到了1~9的所有数字,每个1次. 而乘积恰好也是用到了1~9的所有数字,并且每个1次. ...

随机推荐

  1. HTML简单的伪装与造假

    利用浏览器制止台能简单的修改内容,致使其造成伪装. 打开网页控制台后,不要管那些眼花撩乱的代码,我们直接寻找控制台顶部的 Tab 栏 找到 Console 这个 Tab,点击它,把代码 documen ...

  2. java套打

    1:套打可能是以后软件开发可能会涉及到的功能,主要麻烦地方就是需要精确定位,光是打印发票还好,要是打印那种协议类型的特别麻烦,不仅长而且需要的数据多 ,定位麻烦. 2:而且大多数情况是需要去除页眉页脚 ...

  3. Redis数据类型简介(十分钟快速学习Redis)

    如何在ubuntu18.04上安装和保护redis 如何连接到Redis数据库 如何管理Redis数据库和Keys 如何在Redis中管理副本和客户端 如何在Redis中管理字符串 如何在Redis中 ...

  4. Abp领域事件(EventBus)源码解析

    Abp中使用EventBus来解耦领域中的业务逻辑,也是订阅-发布模式的一种实现.简单来说就是,当我触发一个事件,注册了这个事件的处理器就会被找到并执行. 先看看整体代码结构 其中Entities文件 ...

  5. React:redux+router4搭建应用骨架

    可能是短期内关于react的对后一篇笔记.假设读者对redux和router4有基本了解. 缘由: 现在网上很多关于react+redux的文章都是沿用传统的文件组织形式,即: |--componen ...

  6. HTML标签和属性二

    五.文本标记 7.文本样式 <b></b>  <strong></strong> 加粗 <i></i>   <em> ...

  7. python基本数据类型:字符串及其方法(一)

    大小写转换类 方法一:capitalize()首字母大写字符串 name='hatusne miku' name1=name.capitalize() print(name,name1) 方法二:ti ...

  8. 走迷宫(二):在XX限制条件下,是否走得出

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1728 解题方法:BFS+访问数组vis[][]; 给你起点位置和终点位置,让你判断能不能到达,并且拐弯 ...

  9. 博客管理与文章发布系统-第三方模块及其用法Part1

    写个帖子记录一下自己写的第一个express完整项目. 所需第三方模块及其用法. 一.先把所需文件和准备工作写一下 写项目前的准备 1.创建所需文件夹 public 静态资源 model 数据库操作 ...

  10. 微服务项目的docker自动化部署流程

    目录 微服务的Docker自动化部署 制作JDK1.8的Docker镜像 Docker常用命令介绍 制作image的一般流程 将本地的image上传至私人仓库 使用Maven插件实现自动化docker ...