NEXT数组与字符串最小循环节
结论
通过NEXT数组,可以得到字符串的最小循环节。
设字符串s的结尾下标为i,NEXT[i]=j,如果{j≠0i%(i−j)==0成立,那么s[j+1,i]就是字符串的最小循环节。
简要说明
————————
1 x j
————————
y i
设s[x,j]=s[j,i]
由于s[1,j]=s[y,i],并且
s[1,j]=s[1,x]+s[x,j]
s[y,i]=s[y,j]+s[j,i]
所以s[1,x]=s[y,j]
——————
1 x
——————
y j
和之前的情况相同。
所以如果字符串是由重复的s[j+1,i]组成的,那么s[j+1,i]就是字符串的循环节。
由于NEXT数组的性质,s[j+1,i]也是字符串的最小循环节,因为如果有更小的循环节,NEXT[i]的值也会变大,直到不存在更小的循环节。
相关题目
hdu1358 Period
求每个前缀串的最大周期。
hdu3746 Cyclic Nacklace
最少在字符串头尾添加几个字符,使得从开头到某个位置和从某个位置到结尾的两段字符相同,并且两段字符无重叠部分。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥