字符串循环节

原创 2015年11月21日 14:27:26

字符串若存在循环节,则必有最小循环节,其余循环节均为最小循环节的倍数。


字符串看成一个映射i->s[i] 这样这个问题就类似于函数的周期性...

证明:
若X,Y是字符串的循环节则有 s[i]=s[i+x]=s[i+y]
x=gcd*p y=gcd*q
根据拓展欧几里德算法显然有 xm+yn=gcd(x,y)
pm+yn=1
于是s[i]=s[i+mx+ny]=s[i+gcd*(pm+yn)]=s[i+gcd]成立
若最小循环节为1 命题显然成立
若最小循环节不为1 若存在非整数倍的循环节X 那么X与最小循环节gcd=1与假设矛盾

故所有循环节长度都是最小循环节长度的整数倍


一个字符串A,若存在A=B+C,A=C+B。则该字符串有循环节


长度为N的字符串,可以根据最小循环节的长度来对其分类,可以分成M类,M为N的因子个数,最小循环节长度为N的因子,并且这M类两两不相交

版权声明:本文为博主原创文章,未经博主允许不得转载。

【KMP】与字符串循环节

利用KMP算法中的next数组可以求出字符串的循环次数,间接就可以求出循环节的内容和循环节长度 长度为len的字符串, 如果len % (len - next[len]) == 0, 则循环次数为...

Kmp找字符串循环节——Period ( POJ 1961 )

题目链接: http://poj.org/problem?id=1961 分析: 给出一个字符串长度为N,从左变开始取2~N个字符出来构成一个新字符串,若新字符串能被一个最短的循环节构成则输出新字...
  • FeBr2
  • FeBr2
  • 2016年07月15日 15:09
  • 1005

杭电3746  kmp算法求字符串循环节

话说这道题纠结了两天半,,从周日就开始想的,,就这样一直纠结,纠结,,今天上午终于是ac了,,,,,,题目是让求最少需要增加几个字母,关键是求出字符串的循环节,用kMP算法求循环节,,设字符串长度为l...
  • wmn_wmn
  • wmn_wmn
  • 2011年11月08日 13:05
  • 2610

如何利用KMP的next求字符串的循环节

利用KMP算法中的next值可以求出字符串的循环节,如ababab的循环节为ab,abcd的循环节为abcd,具体做法如下:假设字符串的长度为len,next[len]为字符串的最后一个字符的下一个字...
  • update7
  • update7
  • 2017年05月23日 20:19
  • 82620

POJ:1961-Period(寻找字符串循环节)

PeriodTime Limit: 3000MS Memory Limit: 30000KDescriptionFor each prefix of a given string S wit...

小H的循环节(Hash表-字符串)

字符串Hash 最近遇到了很多字符串问题, 可是我既不会后缀DC3,也不会后缀自动机,后缀树…… 于是,看到题解用Hash骗,小感动一下……(能看懂题解就是很幸福的事4……求D) 这题用Has...

用KMP来求字符串的循环节

利用KMP算法中的next值可以求出字符串的循环节,如ababab的循环节为ab,abcd的循环节为abcd,具体做法如下:假设字符串的长度为len,next[len]为字符串的最后一个字符的下一个字...

如何利用KMP的next求字符串的循环节

利用KMP算法中的next值可以求出字符串的循环节,如ababab的循环节为ab,abcd的循环节为abcd,具体做法如下:假设字符串的长度为len,next[len]为字符串的最后一个字符的下一个字...

Kmp(求字符串公共循环节数目)——Common Divisors ( CodeForces 182D )

题目链接: http://codeforces.com/contest/182/problem/D 分析: 题意为给出两个字符串,求其公共循环节的数目,那么首先要求出其公共最小循环节!这里需要用到...
  • FeBr2
  • FeBr2
  • 2016年07月16日 16:48
  • 457

HDU 3746 KMP的运用。【求字符串添加几个字符,可以成有循环节字符串】

KMP HDU 3746 KMP
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符串循环节
举报原因:
原因补充:

(最多只允许输入30个字)