poj 2406 KMP算法求字符串的最小周期
2016-04-08 09:49
295 查看
点击打开链接
题意:求字符串的最小周期;
分析: 利用KMP算法求Next[]数组的过程可以求得最小周期, 我对KMP算法的Next[]数组的求法过程还没有理解透彻, 等以后做题做多了再来看一下.
题意:求字符串的最小周期;
分析: 利用KMP算法求Next[]数组的过程可以求得最小周期, 我对KMP算法的Next[]数组的求法过程还没有理解透彻, 等以后做题做多了再来看一下.
#include<bitset> #include<map> #include<vector> #include<cstdio> #include<iostream> #include<cstring> #include<string> #include<algorithm> #include<cmath> #include<stack> #include<queue> #include<set> #define inf 0x3f3f3f3f #define mem(a,x) memset(a,x,sizeof(a)) #define F first #define S second using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; inline int in() { int res=0;char c;int f=1; while((c=getchar())<'0' || c>'9')if(c=='-')f=-1; while(c>='0' && c<='9')res=res*10+c-'0',c=getchar(); return res*f; } const int N=1000010; char a ; int Next ; int main() { while(1) { scanf("%s",a); int n=strlen(a); if(n==1 && *a=='.') return 0; Next[0]=-1; int k=-1,j=0; while(j<n) { if(k==-1 || a[j]==a[k]) Next[++j]=++k; else k=Next[k]; } j=n-Next ; //利用Next 的失配转移位置,不是n-1的 if(n%j==0) printf("%d\n",n/j); else puts("1"); } return 0; }
相关文章推荐
- leetcode @python 132. Palindrome Partitioning II
- java 字符串中特殊字符引号“ %百分号的转义
- 《庄子》读书笔记(一)
- HEVC之码流K0103研究
- Exchange 2010和Exchange 2016共存部署-10:配置多域名证书
- NopCommerce架构分析之(七)主题Theme皮肤管理器
- Linux 上重启tomcat 【转】 http://www.cnblogs.com/tovep/articles/2473147.html
- 今日BBC
- Linux echo --显示文本,打印信息
- android获取屏幕像素密度DPI,与density
- 人脸识别DEMO
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月8日)
- Matlab设置形状大小
- sqldeveloper插入中文数据时出现乱码
- 28.java泛型?
- 根据时间戳来计算倒计时
- ajax查询数据返回结果不变
- Linux du --查看文件的磁盘空间占用情况
- mysql中的表复制
- Java反射