【模板】manacher 算法
题目描述
给出一个只由小写英文字符
字符串长度为
输入格式
一行小写英文字符
输出格式
一个整数表示答案。
样例 #1
样例输入 #1
aaa
样例输出 #1
3
提示
点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1.1e7+10;
char s[N],t[N<<1];
int p[N<<1];
void manacher()
{
int n=strlen(s+1);
int m=0;
t[++m]='$';
for(int i=1;i<=n;++i)
t[++m]=s[i],t[++m]='$';
int M=0,R=0;
for(int i=1;i<=m;++i)
{
p[i]=1;
if(i<=R)
{
p[i]=min(p[M*2-i],R-i+1);
}
int &k=p[i];
while(i-k>0&&i+k<=m&&t[i-k]==t[i+k]) k++;
if(i+k-1>R) M=i,R=i+k-1;
}
int ans=0;
for(int i=1;i<=m;++i) ans=max(p[i],ans);
cout<<ans-1<<'\n';
}
void solve()
{
cin>>s+1;
manacher();
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int T=1;
//cin>>T;
while(T--)
{
solve();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现