hdu2594Simpsons’ Hidden Talents

来源:互联网 发布:淘宝秒杀群怎么做到的 编辑:程序博客网 时间:2024/06/05 06:08

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594
给你两个串s1和s2,问你s2的后缀和s1的前缀相等的最长长度
把s2接在s1后面,求出nxt[]数组以后就结束了。。。
注意长度不要超

#include <stdio.h>#include<cstring>#include<iostream>#include<cmath>using namespace std;char a[100020];char b[100020];int la,lb;int nxt[100020];void gnx(){    int i=0,j=-1;    nxt[0]=-1;    while(i<lb){        if(j==-1||b[i]==b[j])nxt[++i]=++j;        else j=nxt[j];    }}int main(void){    while(scanf("%s",b)!=EOF){        scanf("%s",a);        int la=strlen(b);        strcat(b,a);        lb=strlen(b);        gnx();        int ans=nxt[lb];        while(ans>la||ans>lb-la)ans=nxt[ans];        for(int i=0;i<ans;i++){            printf("%c",b[i]);        }if(ans>0)printf(" ");        printf("%d\n",ans);    }    return 0;}
0 0
原创粉丝点击