2023年7月20日发(作者:)
最⼩循环节java,KMP算法求字符串的最⼩循环节题⽬链接(题⽬链接)说到求字符串的最⼩循环节就不得不提及KMP算法因为要求循环节,还需要⽤到KMP算法的next数组KMP算法本来是⽤来求⼀个串中是否包含另⼀个串,或者说⼀个串是否为另⼀个串的⼦串下⾯有⼀个视频,很清晰的介绍了KMP算法如果KMP算法理解其原理了,那么这道题也是⾮常简单的⽤了KMP中的NEXT数组结果直接是strlen(s)-NEXT【strlen(s)】#include#include#includeusing namespace std;int nextnum[1000010];int main(){string s;int step=1,n;while(cin>>s){int len=();memset(nextnum,0,sizeof(0));int i=0,j=1;while(j{if(s[i]!=s[j]&&i!=0){i=nextnum[i-1];}else if(s[i]!=s[j]&&i==0){nextnum[j]=0;j++;}else if(s[i]==s[j]){nextnum[j]=i+1;j++,i++;}}int l=len-nextnum[len-1];printf("%d ",l);for(int i=0; i{printf("%c",s[i]);}printf("n");}return 0;}
发布者:admin,转转请注明出处:http://www.yc00.com/news/1689847725a290264.html
评论列表(0条)