• Problem H 最长子串


     Problem H 最长子串
     
    http://acm.fzu.edu.cn/contest/problem.php?cid=129&sortid=8

    Accept: 31    Submit: 110
    Time Limit: 3000 mSec    Memory Limit : 65536 KB

     Problem Description

    问题很简单,给你一个字符串s,问s的子串中不包含s1,s2...sn的最长串有多长。

     Input

    输入包含多组数据。第一行为字符串s,字符串s的长度1到10^6次方,第二行是字符串s不能包含的子串个数n,n<=1000。接下来n行字符串,长度不大于100。

    字符串由小写的英文字符组成。

     Output

    最长子串的长度

     Sample Input

    lgcstraightlalongahisnstreet 5 str long tree biginteger ellipse

     Sample Output

    12

     Source

    福州大学第十届程序设计竞赛
    Cached at 2013-04-29 15:35:11.
     
     
    #include<iostream>
    #include<string>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    
    using namespace std;
    
    char s[1000100];
    char t[1010][110];
    int cnt;
    
    struct node{
        int x,y;
    }num[1000100];
    
    void Solve(char *a,char *b){
        int loc=0;
        int len=strlen(b);
        while(strstr(a+loc,b)!=NULL){
            num[cnt].x=strstr(a+loc,b)-a;
            num[cnt].y=num[cnt].x+len-1;
            loc=num[cnt].x+len-1;
            cnt++;
        }
    }
    
    int cmp(node aa,node bb){
        return aa.x<bb.x;
    }
    
    int main(){
    
        //freopen("input.txt","r",stdin);
    
        while(~scanf("%s",s)){
            int n;
            scanf("%d",&n);
            for(int i=0;i<n;i++)
                scanf("%s",t[i]);
            cnt=0;
            for(int i=0;i<n;i++){
                Solve(s,t[i]);
            }
            if(cnt==0){
                printf("%d\n",strlen(s));
                continue;
            }
            num[cnt].x=strlen(s);
            num[cnt].y=strlen(s);
            cnt++;
            sort(num,num+cnt,cmp);
            int ans=0;
            for(int i=0;i<cnt-1;i++){
                int tmp=num[i+1].y-(num[i].x+1);
                if(tmp>ans)
                    ans=tmp;
            }
            printf("%d\n",ans);
        }
        return 0;
    }
  • 相关阅读:
    Vue 环境配置
    导入解决方案错误及其解决办法
    Dynamics 365创建用户提示:您正在尝试使用已由其他用户使用的域登录来创建用户。的解决办法
    iOS核心动画详解(CABasicAnimation)
    iOS核心动画详解(一)
    iOS 微信支付流程详解
    初探runtime
    iOS之block,一点小心得
    iOS scrollview循环播放加缩放
    用程序删除工程中多余的图片
  • 原文地址:https://www.cnblogs.com/jackge/p/3050838.html
Copyright © 2020-2023  润新知