HDU 2594 Simpsons’ Hidden Talents(KMP,next数组的应用)
2015-02-22 20:39
411 查看
大概题意:给定两个字符串,求出第一个字符串的前缀和第二个字符串的后缀相同的最大长度,并且输出相同的子串...
我们只需要吧第二个串拼接到第一个串之后就变为上一题了...
不过这个题目是要注意:用上一题方法做的时候...注意答案可能会大于最短的串,那样就错了...比如abab ababab,按照上一题跑出来(没测试)是个比较大(比6大)的数字..但是答案是4...so,判断一下在这个就过了
我们只需要吧第二个串拼接到第一个串之后就变为上一题了...
不过这个题目是要注意:用上一题方法做的时候...注意答案可能会大于最短的串,那样就错了...比如abab ababab,按照上一题跑出来(没测试)是个比较大(比6大)的数字..但是答案是4...so,判断一下在这个就过了
#include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<algorithm> #include<iostream> using namespace std; char s[101000],x[101000]; int next[101000],m; void getnext() { int i=0,j=-1; next[0]=-1; while(i<m) { if(j==-1||s[i]==s[j]) next[++i]=++j; else j=next[j]; } } int main() { while(scanf("%s",s)!=EOF) { scanf("%s",x); int len1=strlen(s); int len2=strlen(x); strcat(s,x); m=strlen(s); getnext(); if(next[m]<=0) printf("0\n"); else { int ans=min(len1,len2); ans=min(ans,next[m]); for(int i=0;i<ans;i++) printf("%c",s[i]); printf(" %d\n",ans); } } return 0; }
相关文章推荐
- HDU 2594 Simpsons’ Hidden Talents(KMP的Next数组应用)
- [KMP-next数组特性]HDU 2594 Simpsons’ Hidden Talents
- HDU 2594 Simpsons’ Hidden Talents (KMP的F数组应用)
- HDU3746——Simpsons’ Hidden Talents(KMP中next数组的应用)
- HDU 2594 Simpsons’ Hidden Talents kmp next数组问题
- HDU 2594 Simpsons’ Hidden Talents(KMP理解应用)
- hdu 2594 Simpsons’ Hidden Talents(两个串的next数组)
- 【kmp算法next数组应用】Simpsons’ Hidden Talents HDU - 2594
- hdu 1867(A + B for you again) KMP的应用 /hdu 2594(Simpsons’ Hidden Talents) KMP
- hdu 2594 Simpsons’ Hidden Talents ( kmp )
- hdu-4763 kmp next数组的应用
- HDU 2594 (简单KMP) Simpsons’ Hidden Talents
- hdu 2594 Simpsons’ Hidden Talents KMP中next【】数组的应用
- 【KMP】 HDU 2594 Simpsons’ Hidden Talents
- HDU 2594 Simpsons’ Hidden Talents(字符串-KMP)
- HDU 2594 Simpsons’ Hidden Talents(KMP)
- HDU 2594 Simpsons’ Hidden Talents (字符串-KMP)
- hdu 2594 Simpsons’ Hidden Talents (kmp扩展)
- 【KMP】hdu 1867 A + B for you again(外:hdu 2594 Simpsons’ Hidden Talents)
- hdu 2594 Simpsons’ Hidden Talents(kmp)