HDU2594 Simpsons’ Hidden Talents【KMP】
来源:互联网 发布:淘宝开放平台 top 编辑:程序博客网 时间:2024/05/18 22:52
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=2594
题目大意:
给你两个串S1和S2,求既是S1的前缀同时是S2的后缀的最长字符串及长度。
思路:
KMP算法中Next[j] == k的实质是当前字母不匹配时,模式串的前k项(S0~Sk-1)和位置j前
的k项(Sj-1-k~Sj-1)是相等的,这个k值是所有满足上面情况最大的。那么Next[len]的含义
就是模式串的最长的前缀和后缀相等的串长度。
利用Next[]的性质,先将串S2连接到S1后边。求S1的Next[]数组。那么,现在的Next[len]
就是S1的前缀和S2的后缀最长的长度,这是当这个长度<=串S1的长度和S2的长度时候才满
足的。如果不满足上述条件,说明找到的串不是S1或是S2的子串。让len = Next[len]继续查
找满足条件的最长长度。找到满足要求最长长度,输出S0~S(len-1)的串。
AC代码:
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;char s1[100010],s2[50010];int Next[100010],len,len1,len2;void GetNext(char *s){ int i = 0,j = -1; Next[0] = -1; while(i <= len) { if(j == -1 || s[i] == s[j]) { i++,j++; Next[i] = j; } else j = Next[j]; }}int main(){ while(cin >> s1 >> s2) { len1 = strlen(s1); len2 = strlen(s2); strcat(s1,s2); len = len1 + len2; GetNext(s1); while(Next[len] > len1 || Next[len] > len2) len = Next[len]; len = Next[len]; for(int i = 0; i < len; ++i) cout << s1[i]; if(len) cout << ' '; cout << len << endl; } return 0;}
0 0
- 【KMP】 hdu2594 Simpsons’ Hidden Talents
- hdu2594 Simpsons’ Hidden Talents kmp
- HDU2594 Simpsons’ Hidden Talents 【KMP】
- hdu2594 Simpsons’ Hidden Talents(KMP)
- HDU2594 Simpsons’ Hidden Talents【KMP】
- HDU2594 Simpsons’ Hidden Talents KMP
- HDU2594 Simpsons’ Hidden Talents KMP
- Simpsons' Hidden Talents hdu2594 kmp
- hdu2594 Simpsons’ Hidden Talents (kmp)
- 【hdu2594】Simpsons’ Hidden Talents——KMP
- HDU2594 Simpsons’ Hidden Talents(KMP)
- HDU2594:Simpsons’ Hidden Talents
- hdu2594-Simpsons’ Hidden Talents
- hdu2594 Simpsons’ Hidden Talents
- hdu2594 Simpsons’ Hidden Talents
- HDU2594 Simpsons’ Hidden Talents
- HDU2594 Simpsons’ Hidden Talents
- HDU2594-Simpsons’ Hidden Talents
- MySQL索引背后的数据结构及算法原理(上)
- HDU 1251 统计难题
- Git在Android Studio中的使用
- quick-cocos2d-x游戏开发【11】——多点触摸
- loadrunner执行时passed transactions 为0问题
- HDU2594 Simpsons’ Hidden Talents【KMP】
- com组件和一般dll的区别
- JS调用Android里面的方法,Android调用JS里面的方法
- .net连接数据源以及dropdownlist的数据绑定
- quick-cocos2d-x游戏开发【12】——硬件按键事件
- Android性能调优
- IOS改变导航条上标题的属性(包括字体,颜色,等)
- MediaScanner添加对多种音频文件ID3信息的保存支持
- Chrome developer tool介绍 (javascript调试)