牛客-2018多校算法第五场C-KMP
2024-09-01 04:52:14
在原来的字符串中前缀与后缀相同,且原来的中间还含有这个子串;
这里加的num【】数组真是太厉害了,可以直接用来判断中间是否有子串;
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <cstdio>
using namespace std;
const int maxn =1e6+; int nt[maxn],len;
int num[maxn];
string str;
void get_nt()
{
int i=,k=-;
nt[]=-;
while(i < len)
{
if( k==- || str[i]==str[k])
nt[++i]=++k;
else
k=nt[k];
}
}
int main(){
int find = ;
cin>>str;
len =str.length();
get_nt();
for(int i=;i<len;i++)
{
num[nt[i]]++;
cout<<nt[i]<<endl;
}
int i =nt[len];
//cout<<len<<endl;
cout<<i<<endl;
while(i)
{
if(num[i])
{
for(int k=;k<i;k++)
cout<<str[k];
cout<<endl;
find = ;
break;
}
i=nt[i];
}
if(find)cout<<"Just a legend"<<endl;
return ;
}
最新文章
- 【BZOJ1497】[NOI2006]最大获利 最小割
- union和union all用法
- [.NET领域驱动设计实战系列]专题四:前期准备之工作单元模式(Unit Of Work)
- 在AD转换中的过采样和噪声形成
- 使用jsTree动态加载节点
- linux信息查找
- PHP ServerPush <;转>;
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)
- 【SSRS】入门篇(四) -- 向报表添加数据
- luogu1196 银河英雄传说 (并查集)
- WebLogic调用WebService提示Failed to localize、Failed to create WsdlDefinitionFeature
- MySQL 数据类型对比:char 与 varchar;varchar 与 text;datetime 与 timestamp;blob 与 text;
- 利用blob对象实现大文件分片上传
- 解决react-router 的activeClassName 首页重复匹配问题
- sonarqube插件开发(三) 调试插件
- 【CF772D】Varying Kibibits FWT
- css3 3d翻转效果
- mysql获取随机题目、排序
- js数字进制转换
- KVM虚拟机克隆及快照管理