zoukankan      html  css  js  c++  java
  • 正则问题(解题报告)

    问题 1887: [蓝桥杯][2017年第八届真题]正则问题

    时间限制: 1Sec 内存限制: 128MB 提交: 125 解决: 38

    题目描述
    考虑一种简单的正则表达式:
    只由 x ( ) | 组成的正则表达式。
    小明想求出这个正则表达式能接受的最长字符串的长度。


    例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6。
    输入
    一个由x()|组成的正则表达式。输入长度不超过100,保证合法。
    输出
    这个正则表达式能接受的最长字符串的长度。
    样例输入
    ((xx|xxx)x|(x|xx))xx
    样例输出
    6

    解释:(x)x表示x+x
        (x|xx)表示x或者xx
    当遇到( 时,进入一个dfs
    遇到 )时结束循环,比较|前后的值
    遇到|时进行比较
    遇到x时进行计数即可
    #include<iostream>
    #include<cmath>
    #include<string>
    
    using namespace std;
    string a;
    int p;
    int dfs()
    {
        int ans=0;
        int result=0;
      int len=a.length();
        while(p<len)
        {
            if(a[p]=='x')
            {
                p++;
                ans++;
            }
            else if(a[p]=='(')
            {
                p++;
                ans=ans+dfs();
            }
            else if(a[p]==')')
            {
                p++;
                break;
            }
            else
            {
                p++;
                result=max(result,ans);
                ans=0;
            }
    
        }
        result=max(result,ans);
        return result ;
    }
    int main ()
    {
        cin>>a;
        cout<<dfs();
        return 0;
    }
  • 相关阅读:
    1020.表-继承
    1019.模式(限定名)
    1018.行安全策略
    1017.权限
    1016.表结构修改
    1015.【转】oracle rowid and postgresql ctid
    1014.表-系统列
    20201227[java]同构字符串
    oCam_v4850录屏软件
    《软件定义网络中的异常流量检测研究进展》论文笔记
  • 原文地址:https://www.cnblogs.com/zwx7616/p/10901103.html
Copyright © 2011-2022 走看看