【KMP】Radio Transmission

匿名 (未验证) 提交于 2019-12-02 23:49:02

题目描述

给你一个字符串,它是由某个字符串不断自我连接形成的。但是这个字符串是不确定的,现在只想知道它的最短长度是多少。

输入

第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成.

输出

请输出最短的长度

样例输入

 8 cabcabca  

样例输出

 3

题解

 #include<iostream> #include<cstring> using namespace std; int n,q[1000005]; char a[1000005]; int main() { 	cin>>n; 	scanf("%s",a+1); 	int j=0; 	q[1]=0; 	for(int i=2;i<=n;i++) 	{ 		while(j&&a[i]!=a[j+1]) 			j=q[j]; 		if(a[i]==a[j+1]) 			j++; 		q[i]=j; 	} 	cout<<n-q[n]<<endl; 	return 0; }

文章来源: https://blog.csdn.net/weixin_42146061/article/details/96850356
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!