HDU 3746(Cyclic Nacklace)字符串匹配-KMP
来源:互联网 发布:光子嫩肤永久有效知乎 编辑:程序博客网 时间:2024/06/05 19:44
题目要求添加几个字符使得原来字符串是循环的。
循环利用NEXT数组的性质,LEN%(LEN-NEXT[LEN])==0,刚好等于0的不需要添加,不等于零的,余数LEN%(LEN-NEXT[LEN])就是多出来的那部分,把余数部分补齐
循环节长度就是LEN-NEXT[LEN],需要补的就是LEN-NEXT[LEN]-LEN%(LEN-NEXT[LEN])
代码
#include<iostream>#include<cstring>#include<stdio.h>using namespace std;#define LEN 100010int nexts[LEN];char s[LEN];void Getnext(int n){ int i,j; i=0,j=-1; nexts[0]=-1; while(i<n) { if(j==-1 || s[i]==s[j]) { i++; j++; nexts[i]=j; } else j=nexts[j]; }}int main(){ int T,len,t,ans; cin>>T; while(T--) { scanf("%s",&s); len=strlen(s); Getnext(len); if(len%(len-nexts[len])==0 && nexts[len]!=0) cout<<"0"<<endl; else { t=len-nexts[len]; ans=t-len%t; cout<<ans<<endl; } } return 0;}
0 0
- HDU 3746(Cyclic Nacklace)字符串匹配-KMP
- HDU 3746 Cyclic Nacklace kmp处理字符串
- KMP hdu-3746-Cyclic Nacklace
- HDU 3746 Cyclic Nacklace(KMP)
- HDU 3746 Cyclic Nacklace KMP
- HDU 3746 Cyclic Nacklace KMP
- HDU 3746 Cyclic Nacklace KMP
- hdu 3746 Cyclic Nacklace(KMP)
- HDU 3746 Cyclic Nacklace KMP
- hdu 3746 Cyclic Nacklace(KMP)
- HDU 3746 Cyclic Nacklace / KMP
- HDU--3746--Cyclic Nacklace【KMP】
- hdu-3746 Cyclic Nacklace 【kmp】
- hdu 3746 Cyclic Nacklace ( kmp )
- HDU-3746 Cyclic Nacklace (kmp)
- [hdu 3746] Cyclic Nacklace [kmp]
- hdu 3746 Cyclic Nacklace kmp
- hdu 3746 Cyclic Nacklace (KMP)
- solr query
- Nouveau源码分析(零)
- web.xml中的url-pattern映射规则
- JSP - Directives
- Android ORM系列之GreenDao关联关系映射
- HDU 3746(Cyclic Nacklace)字符串匹配-KMP
- PAT 1075. PAT Judge (25)
- hdu 2899 Strange fuction 三分
- 浅谈深度学习(Deep Learning)的基本思想和方法
- handlebars-----另一种help的写法
- MultipartEntity上传文件时传递中文参数出现乱码的解决方案
- 信号处理程序中调用不可重入函数getpwnam 起结果是不可预见的。
- #include<list>
- Compress--- The input point cloud