hdu4763kmp
来源:互联网 发布:js 控制class active 编辑:程序博客网 时间:2024/06/06 10:36
题意 给出一个串,求出最长的一个字串,使得他是原串的前缀,也是后缀,并且在中间也能找到一个该串,三个串不能重合;
利用KMP的next数组,通过自己匹配自己,next[i]代表了前i的字符前缀和后缀相等的最长长度,从len-1往前暴力
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;const int maxn=1e6+10;char s[maxn];int nex[maxn];void getnext(){ int i=0,j=-1; nex[0]=-1; int len=strlen(s); while(i<len) { if(j==-1||s[i]==s[j]) { i++;j++; nex[i]=j; } else j=nex[j]; }}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%s",s); getnext(); int len=strlen(s); int m=nex[len]; int ans=0; for(int i=len-1;i>=2;i--) { int k=nex[i]; while(k>0) { if(k<=m&&k+k<=i&&i+k<=len) { ans=max(ans,k); break; } k=nex[k]; } } printf("%d\n",ans); } return 0;}
0 0
- hdu4763kmp
- cordova打开远程网页等设置
- 剑指offer编程题目汇总(更新中。。)
- 深度解读海量数据存储和访问下的水平分库&去IOE
- [Java并发包学习七]解密ThreadLocal
- OC从入门到精通-2.三大特性(封装,继承,多态)
- hdu4763kmp
- hibernate,mybatis,beetlsql 全面比较
- 给tableview cell添加阴影:
- Android5.0 之 ToolBar基础功能
- html打开本地android app
- Android Audio 框架简读 <2>
- 在批处理模式下使用mysql
- 如何撰写创业计划书
- leetcode 24. Swap Nodes in Pairs