美文网首页
蓝桥杯17年最长正则结果

蓝桥杯17年最长正则结果

作者: Daniel梁 | 来源:发表于2019-03-19 23:04 被阅读0次

题目:

考虑一种简单的正则表达式:
只由 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,否则按无效代码处理。

要点:

一般看到正则匹配或者括号匹配都要用到栈结构,通过(和)决定操作

import java.util.Stack;

public class Solution {

    public static void main(String[] args) {
        
        String string = "((xx|xxx)x|(x|xx))xx";
        
        Stack<Character> stack = new Stack<>();
        
        for (int i = 0; i < string.length(); i++) {
            //找到)开始计算 并往回找到与其对应的(
            if (string.charAt(i) == ')')
            {
                String a = "";

                while (stack.peek() != '(')
                    a += stack.pop();

                int maxLength = getMaxLength(a);
                //拿到(xx|xxx)里面的xxx并push回去继续完成下面的计算
                for (int j = 0; j < maxLength; j++)
                    stack.push('x');

            }

           else stack.push(string.charAt(i));

        }

        String last = "";

        while (!stack.isEmpty()) last+=stack.pop();

        System.out.println(getMaxLength(last));
    }
    //计算xx|xxx的情况
    public static int getMaxLength(String str){
        int Max = -1;
        //注意 | 是属于特殊字符,需要加上\\去告诉系统这个是特殊字符(正则),才可以吧两边x从|分开,^那些也如此!
        String[] result = str.split("\\|");
        
        for (int j = 0; j < result.length; j++)
            Max = Math.max(result[j].toCharArray().length,Max);

        return Max;
    }

}

相关文章

  • 蓝桥杯17年最长正则结果

    题目: 要点: 一般看到正则匹配或者括号匹配都要用到栈结构,通过(和)决定操作

  • [蓝桥杯]正则问题

    问题 1887: [蓝桥杯][2017年第八届真题]正则问题 题目描述 考虑一种简单的正则表达式:只由 x ( )...

  • 蓝桥杯_1正则表达式

    最近小生,在练习蓝桥杯的习题,故有同路者共勉! 故:Java正则表达式 1.字符 x 字符 x。例如a表示字...

  • 蓝桥杯

    明天就是蓝桥杯省赛了,今天早点睡吧,没事就是一个小比赛,没什么的。大不了就去打打酱油吧。早早洗漱好,就上了床,可是...

  • 蓝桥杯

    一周前才开始意识到蓝桥杯又要来了,赶快找大佬聊聊怎么准备 “只要你掌握了最近十年的7道题以上省一几乎没问题 4-6...

  • 蓝桥杯真题题解收藏

    收藏一些在网上发现的,觉得写的不错的蓝桥杯真题题解内容,给学生练习备战蓝桥杯时所用。2020蓝桥杯省赛第二场C组_...

  • 蓝桥杯试题——FJ的字符串

    title: 蓝桥杯试题——FJ的字符串date: 2019年2月17日20:33:05tags: 蓝桥杯试题 算...

  • 蓝桥杯17年最长字符串匹配

    这题是代码填空题 package com.company; /* 标题:最大公共子串 */ 他这里给定思路是使用二...

  • 蓝桥杯 基础训练 Python版 0

    呃,是不是这篇文章应该叫 蓝桥杯之从入门到放弃 ? 感谢蓝桥杯,让我学了Python。但是由于近期种种事情,已经打...

  • 蓝桥杯感想

    这个项目是我们团队经过了很多努力做出来的,期间经历了很多挫折。感谢有指导老师们和同学们的陪伴。我们最后还是坚持下来...

网友评论

      本文标题:蓝桥杯17年最长正则结果

      本文链接:https://www.haomeiwen.com/subject/lyuomqtx.html