- #include
- #include
- #include
- using namespace std;
- #define ll long long
- const int N=20005;
- char s[N+5];
- int dp[N*2+5];
- char str[N*2+5];
- int Manacher(char *s){
- int n=0,len=strlen(s+1);
- str[0]='$';
- for(int i=1;i<=len;i++){
- str[++n]='#';
- str[++n]=s[i];
- }
- str[++n]='#',str[++n]='@';
- int r=0,pos=0;
- for(int i=1;i<=n;i++){
- if(i
- dp[i]=min(dp[2*pos-i],r-i);
- else dp[r=i]=1;
- while(str[i-dp[i]]==str[i+dp[i]])dp[i]++;
- if(i+dp[i]>r)r=i+dp[i],pos=i;
- }
- int ret=0;
- for(int i=1;i<=n;i++){
- ret=max(ret,dp[i]-1);
- }
- return ret;
- }
- int main(){
- while(~scanf("%s",s+1)){
- cout<<Manacher(s)<
- }
- }
-
相关阅读:
三层交换机与防火墙对接上网如何配置
centos7安装单机elasticsearch7.7.1
Java基础(十九):集合框架
Java基础学习之JavaScript
Java 监控直播流rtsp协议转rtmp、hls、httpflv协议返回浏览器
Asp-Net-Core学习笔记:3.使用SignalR实时通信框架开发聊天室
Linux基本命令及Linux文件类型
Vue 数据监听机制及 Vue 2.0 和 Vue 3.0 的比较
常用docker命令 docker_cmd_sheet
金仓数据库KingbaseES客户端编程开发框架-SQLAlchemy(4. 程序示例)
-
原文地址:https://blog.csdn.net/weixin_74139128/article/details/133251043